欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android手机闹钟服务AlarmManagerk开发案例

程序员文章站 2024-03-01 12:50:46
alarmmanager通常用来开发手机闹钟,并且它是一个全局定时器,可在指定时间或指定周期启动其他组件(包括activity,service,broadcastrecei...

alarmmanager通常用来开发手机闹钟,并且它是一个全局定时器,可在指定时间或指定周期启动其他组件(包括activity,service,broadcastreceiver)

获取alarmmanager对象:

getsystemservice(service.alarm_service)

调用其中的方式设置定时器启动指定组件:

set(int type,long triggerattime,pendingintent operation)设置在triggerattime时间启动由operation参数指定的组件。

“第一个参数指定定时服务的类型,其值可以使:
elapsed_realtime:指定从现在开始时间过了一定时间后启动operation对相应的组件。
elapsed_realtime_wakeup:指定从现实开始时间过了一定时间后启动operation队形的组件,即使系统关机也会执行operation所对应的组件。
rtc:指定当系统调用system.currenttimemillls()方法返回值与triggerattime相等时启动operation所对应的组件。
rtc_wakeup:指定当系统调用system.currenttimemillls()方法返回值与triggerattime相等时启动operation所对应的组件,即使系统关机也会执行operation所对应的组件。”

setinexactrepeationg(int type,long triggerattime,long interval,pendingintent operation):设置一个非精确的周期性任务。

setrepeating(int type,long triggerattime,long interval,pendingintent operation):设置一个周期性定时任务。

cancle(pendingintent operation)取消alarmmanger定时服务

示例:

Android手机闹钟服务AlarmManagerk开发案例

核心代码:

public class mainactivity extends activity {

 private alarmmanager alarmmanager;
 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_main);
  //获取alarmmanager对象
  alarmmanager= (alarmmanager) getsystemservice(alarm_service);
 }

 public void btn(view view) {
  final calendar c = calendar.getinstance();
  timepickerdialog dialog = new timepickerdialog(this,
    new ontimesetlistener() {
   //延迟意图(即闹钟的意图)
   pendingintent paintent = pendingintent.getactivity(mainactivity.this, 
     1, new intent(mainactivity.this,secondactivity.class), 
     pendingintent.flag_update_current);
     @override
     public void ontimeset(timepicker view, int hourofday, int minute) {
      //设置你所选择的时间
      c.set(calendar.hour_of_day, hourofday);
      c.set(calendar.minute, minute);
      //第一个参数指定闹钟服务的类型
      //第二个参数指定闹钟间隔的时间
      //第三个参数指跳转闹钟的延迟意图
      alarmmanager.set(alarmmanager.rtc_wakeup, c.gettimeinmillis(), paintent);
     }
    }, 
    //闹钟的初始值(时和分)
    c.get(calendar.hour_of_day),
    c.get(calendar.minute), 
    true);
  dialog.show();
 }
}

布局:

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingbottom="@dimen/activity_vertical_margin"
 android:paddingleft="@dimen/activity_horizontal_margin"
 android:paddingright="@dimen/activity_horizontal_margin"
 android:paddingtop="@dimen/activity_vertical_margin"
 tools:context="com.example.alarmmanager.mainactivity" >

 <button
  android:onclick="btn"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/btntext" />

</relativelayout>

以上就是本文的全部内容,希望对大家学习android软件编程有所帮助。