闹钟实现步骤
闹钟分二种
单次,响铃一次即结束
周期,响铃一段时间后,再继续
管理类的一些方法
方法 | 注释 |
---|---|
(AlarmManager) getSystemService(Context.ALARM_SERVICE); | 从上下文内取到 闹钟的管理器 |
PendingIntent.getBroadcast(getApplicationContext(),0x11,intent,0); | 参数一: 上下文 参数二: 请求码 十二进制,0x11之类的 参数三: 要调用的接受程序 参数四:标志位 0即可 |
闹钟管理对象.set(AlarmManager.RTC_WAKEUP,SetUpThecalendar.getTimeInMillis(),pendingIntent); | RTC_WAKEUP(闹钟响铃、会把手机屏幕唤醒) 参数二:闹钟响铃时间点(未来点) 参数三:闹钟 操作 |
闹钟管理对象.setRepeating(AlarmManager.RTC_WAKEUP,SetUpThecalendar.getTimeInMillis(),6000,pendingIntent); | //与上面 单次 基本相同,参数三:间隔多久,再次响铃 |
实现,的代码
- 步骤
- 先,建立第一个日历类,对象,用来给时间对话框设置定值
- 建立时间对话框,并设定时间
- 取到,闹钟管理类对象,再建立一个日历类,用来设定你设置后的时间
- 设定,闹钟的类型
- 设置,时间对话框,显示
//设置 闹钟 方法
public void setAlarm_(final boolean choice){
//日历类,用来,设置时间对话框
Calendar calendar=Calendar.getInstance();
//建立时间对话框 参数一:上下文 参数二:对话框,选着监听事件 参数三: 对话框内显示的,小时
// 参数四: 对话框,显示的 分钟 参数五: 是否是24小时制
TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override //参数一: 时间对话框 参数二: 你设置的小时 参数三:你设置的秒
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//从上下文内取到 闹钟的管理器
AlarmManager alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//取设置的时间,和当前时间,相差的毫秒
Calendar SetUpThecalendar=Calendar.getInstance();
//设置,你选择的 小时
SetUpThecalendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
//设置,你选择的分钟
SetUpThecalendar.set(Calendar.MINUTE,minute);
//建立未来式 闹钟
//它有多种方法,
// getBroadcast() 通过广播
//getService() 通过服务
// getActivity() 通过activity
//跳转到,的接受广播, 可以理解为(频率)
Intent intent=new Intent("com.example.myapplication_alarm.AlarmBroadcast.Receive");
//参数一: 上下文 参数二: 请求码 十二进制,0x11之类的
//参数三: 要调用的接受程序 参数四:标志位 0即可
PendingIntent pendingIntent= PendingIntent.getBroadcast(getApplicationContext(),0x11,intent,0);//操作
if(choice){//为真时, 一次性,闹钟
//参数一:闹钟类型,闹钟管理器.RTC_WAKEUP(闹钟响铃、会把手机屏幕唤醒)
//参数二:闹钟响铃时间点(未来点) 就是说,什么是闹钟响。 从格林尼治时间到,你选中时间对话框之间相隔的总毫秒数
//参数三:闹钟 操作
alarmManager.set(AlarmManager.RTC_WAKEUP,SetUpThecalendar.getTimeInMillis(),pendingIntent);
}else{//设置为,重复闹钟
//与上面 单次 基本相同,参数三:间隔多久,再次响铃
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,SetUpThecalendar.getTimeInMillis(),6000,pendingIntent);
}
}
},calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true);
//显示,时间 对话框
timePickerDialog.show();
}