`

AlarmManager类的应用(实现闹钟功能)

阅读更多

转  http://blog.csdn.net/jeethongfei/article/details/6767826

 

1、AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用,实现闹钟等提示功能

2、AlarmManager的常用方法有三个:

(1)set(int type,long startTime,PendingIntent pi)

该方法用于设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟执行时间,第三个参数表示闹钟响应动作。

(2)setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);

该方法用于设置重复闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟首次执行时间,第三个参数表示闹钟两次执行的间隔时间,第三个参数表示闹钟响应动作。

(3)setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);

该方法也用于设置重复闹钟,与第二个方法相似,不过其两个闹钟执行的间隔时间不是固定的而已。

3、三个方法各个参数详悉:

(1)int type : 闹钟的类型,常用的有5个值:AlarmManager.ELAPSED_REALTIME、 AlarmManager.ELAPSED_REALTIME_WAKEUP、AlarmManager.RTC、 AlarmManager.RTC_WAKEUP、AlarmManager.POWER_OFF_WAKEUP。

AlarmManager.ELAPSED_REALTIME表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3;

AlarmManager.ELAPSED_REALTIME_WAKEUP表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间,状态值为2;

AlarmManager.RTC表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1;

AlarmManager.RTC_WAKEUP表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;

AlarmManager.POWER_OFF_WAKEUP表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间,状态值为4;不过本状态好像受SDK版本影响,某些版本并不支持;

(2)long startTime : 闹钟的第一次执行时间,以毫秒为单位,可以自定义时间,不过一般使用当前时间。需要注意的是,本属性与第一个属性(type)密切相关,如果第一个参数对 应的闹钟使用的是相对时间(ELAPSED_REALTIME和ELAPSED_REALTIME_WAKEUP),那么本属性就得使用相对时间(相对于 系统启动时间来说),比如当前时间就表示为:SystemClock.elapsedRealtime();如果第一个参数对应的闹钟使用的是绝对时间 (RTC、RTC_WAKEUP、POWER_OFF_WAKEUP),那么本属性就得使用绝对时间,比如当前时间就表示 为:System.currentTimeMillis()。

(3)long intervalTime :对于后两个方法来说,存在本属性,表示两次闹钟执行的间隔时间,也是以毫秒为单位。

(4)PendingIntent pi : 是闹钟的执行动作,比如发送一个广播、给出提示等等。PendingIntent是Intent的封装类。需要注意的是,如果是通过启动服务来实现闹钟提 示的话,PendingIntent对象的获取就应该采用Pending.getService(Context c,int i,Intent intent,int j)方法;如果是通过广播来实现闹钟提示的话,PendingIntent对象的获取就应该采用 PendingIntent.getBroadcast(Context c,int i,Intent intent,int j)方法;如果是采用Activity的方式来实现闹钟提示的话,PendingIntent对象的获取就应该采用 PendingIntent.getActivity(Context c,int i,Intent intent,int j)方法。如果这三种方法错用了的话,虽然不会报错,但是看不到闹钟提示效果。

4、 AlarmManager使用示例:利用用户自定义广播实现闹钟功能,从当前时间开始,每隔10分钟提示一次

(1)实现原理:在 SendActivity.java中定义一个AlarmManager对象,指定该对象从当前时间开始,每隔10分钟向名为 “MYALARMRECEIVER”的广播接收器发出一条广播,附加消息内容为“你该打酱油了”;创建一个名为MyReceiver的广播接收器,在其 onReceive方法中获取Intent对象传过来的值(“你该打酱油了”)并用一个Toast组件显示出来;在 AndroidManifest.xml文件中注册SendActivity类和广播接收器类MyReceiver,设置MyReceiver的 action的值为“MYALARMRECEIVER”

(2)代码实现:

第一步:创建广播接收类MyReceiver.java,在其onReceive方法中获取Intent的附加信息msg,并用Toast组件显示

 

    public void onReceive(Context context,Intent intent){  
         String msg = intent.getStringExtra("msg");  
         Toast.makeText(context,msg,Toast.LENGTH_SHORT).show();  
    }  

 第二步:在AndroidManifest.xml中注册广播接收类MyReceiver.java,设置其action值为“MYALARMRECEIVER”

    <receiver android:name=".MyReceiver">  
       <intent-filter>  
          <action android:name="MYALARMRECEIVER" />  
       </intent-filter>  
    </receiver>  

 第三步:创建SendActivity.java,用于设置闹钟,定时发出广播

//创建Intent对象,action指向广播接收类,附加信息为字符串“你该打酱油了”  
  
Intent intent = new Intent("MYALARMRECEIVER");  
  
intent.putExtra("msg","你该打酱油了");  
  
//创建PendingIntent对象封装Intent,由于是使用广播,注意使用getBroadcast方法  
  
PendingIntent pi = PendingIntent.getBroadcast(this,0,intent,0);  
  
//获取AlarmManager对象  
  
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);  
  
//设置闹钟从当前时间开始,每隔10分钟执行一次PendingIntent对象,注意第一个参数与第二个参数的关系  
  
am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentMillis(),600*1000,pi); 

 第四步:在AndroidManifest中为SendActivity.java注册

    <activity android:name=".SendActivity" />  

 

分享到:
评论

相关推荐

    Android通过AlarmManager类实现简单闹钟功能

    使用 AlarmManager 实现闹钟,首先需要创建一个继承自 BroadcastReceiver 的类,实现 onReceive 方法来接收这个 Alarm 服务,然后通过建立 Intent 和 PendingIntent 连接来调用 Alarm 组件,并通过 TimePickerDialog...

    基于Alarmmanager实现简单闹钟功能

    在实现闹钟功能时,需要使用PendingIntent对象来指定闹钟的触发事件。PendingIntent对象可以指定要触发的Activity、Service或BroadcastReceiver组件。 在本例中,我们使用Alarmmanager来实现一个简单的闹钟功能。...

    一个简单的闹钟,利用Alarmmanager实现

    综上所述,`AlarmManager` 是Android开发中实现定时任务的核心工具,熟练掌握其使用能帮助开发者构建各种功能强大的应用程序,例如闹钟、定时提醒等。通过实践和理解上述知识点,你将能够创建出更加灵活和可靠的定时...

    Android实现闹钟的所有功能(Android studio)

    在Android平台上,开发一款闹钟应用需要掌握一系列关键知识点,...综上所述,开发一个完整的Android闹钟应用涵盖了Android系统的核心组件和特性,需要理解并熟练运用这些知识,才能为用户提供稳定且易用的闹钟功能。

    Android AlarmManager实现多个定时重复提醒

    本文将深入探讨如何使用`AlarmManager`来实现多个定时且重复的提醒功能。 首先,我们需要理解`AlarmManager`的工作原理。`AlarmManager`通过向系统注册闹钟事件,当达到设定的时间点时,会触发一个`PendingIntent`...

    Xamarin.Android通过闹钟(AlarmManager)实现定时提供的功能

    在Xamarin.Android项目中,`AlarmDemo`可能是一个包含此功能的演示应用,其中包含了完整的`AlarmManager`使用示例,包括设置、触发和取消闹钟的代码。 总之,`AlarmManager`是Xamarin.Android中实现定时任务的关键...

    简单实现Android闹钟功能

    在Android应用开发中,闹钟功能是常见的需求之一,它允许用户设置提醒或者定时执行某些操作。本示例将详细讲解如何实现一个简单的Android闹钟功能。 首先,我们需要引入必要的库,这里用到了`AlarmManager`,它是...

    AlarmManager 闹铃(支持重启)

    `AlarmManager`是Android中强大的定时任务管理工具,通过结合`PendingIntent`和`BroadcastReceiver`,我们可以实现重启后依然生效的多闹钟功能。但务必注意权限管理和电池效率,以提供良好的用户体验。在实际开发中...

    mooc_android_lesson18_AlarmManager和PendingIntent实现定时提醒功能

    `AlarmManager`和`PendingIntent`是Android系统提供的两个关键组件,用于实现这样的定时提醒功能。下面将详细阐述这两个组件的工作原理及其结合使用的方式。 `AlarmManager`是Android系统中的一个服务,它允许应用...

    实现可定时响起的闹钟----PendingIntent 与 AlarmManager 的运用

    本文将深入探讨如何利用这两个组件来实现一个可定时响起的闹钟功能。 首先,`AlarmManager`是Android系统中的一个服务,用于安排在未来某一时刻启动或重复执行操作。它可以设置精确到毫秒的定时任务,非常适合用来...

    Androd AlarmManager小闹钟源代码

    在Android开发中,`AlarmManager`是一个至关重要的组件,它允许...总的来说,理解并熟练运用`AlarmManager`对于Android开发者来说非常重要,它能帮助我们实现更多丰富的功能,而"小闹钟"程序就是一个很好的学习案例。

    Android AlarmManager的使用

    在提供的`MyAlarmManager`文件中,可能包含了创建和管理`AlarmManager`实例的类,以及实现闹钟功能的相关代码。具体实现细节需要查看源代码来了解。 通过上述步骤和注意事项,你可以利用`AlarmManager`构建出功能...

    全局定时器 AlarmManager

    全局定时器AlarmManager是Android系统中的一个重要组件,用于在特定的时间...通过以上步骤,我们可以使用AlarmManager实现定时更换壁纸的功能。这只是一个基本的示例,实际应用中可能需要根据具体需求进行调整和优化。

    AlarmManager

    总的来说,`AlarmManager`是Android开发者不可或缺的工具,它使得应用程序能够在预设的时间执行关键任务,从而提升用户体验和应用功能。通过深入理解`AlarmManager`的工作机制和使用方法,开发者可以更有效地利用这...

    安卓作业—-慕课移动应用开发作业18之运用AlarmManager和PendingIntent实现简单闹钟

    本篇通过AlarmManager和PendingIntent实现定时提醒功能,界面运用Button、TextView、Switch进行布局 同时这也是中国大学慕课移动终端应用开发的网课作业18,我会持续更新我的作业,如果有需要关注一下吧 说明 具体的...

    AlarmManager、PendingIntent的使用\\附件Home监听十分钟后再次启动应用取消服务

    在Android开发中,`AlarmManager`和`PendingIntent`是两个非常重要的组件,它们用于实现应用程序在特定时间或触发特定事件时执行任务的功能。本文将深入探讨这两个组件的使用,并结合给定的“附件Home监听十分钟后...

    android 闹钟定时任务 AlarmManager

    2. **触发机制**:`AlarmManager`使用操作系统内核级别的计时器来实现,确保即使应用被关闭,闹钟仍能准确触发。 3. **电源管理**:Android系统会根据电源状态和设备的休眠模式优化闹钟的触发,例如在设备休眠时延迟...

    Android 闹钟功能实例源码

    首先,我们需要定义一个自定义的BroadcastReceiver类,并重写onReceive()方法,在该方法中实现闹钟触发时需要执行的操作。 三、设置AlarmManager 1. 获取AlarmManager实例:通过Context.getSystemService(ALARM_...

    运用AlarmManager实现的定时项目

    总之,“运用AlarmManager实现的定时项目”是一个基础但实用的Android应用,通过学习和理解该项目,开发者可以掌握如何利用`AlarmManager`来创建定时任务,并控制设备的特定功能。同时,项目的优化也是一个持续的...

    安卓开发 整点报时 闹钟原理 AlarmManager service

    - 如果设置了RTC_WAKEUP,系统还会唤醒设备以执行任务,这对于实现闹钟功能至关重要。 3. **创建整点报时应用**: - 首先,我们需要创建一个BroadcastReceiver,用于接收AlarmManager发出的Intent。 - 在...

Global site tag (gtag.js) - Google Analytics