安卓之闹钟
来源:互联网 发布:热血英豪mac版打不开 编辑:程序博客网 时间:2024/05/13 18:55
做一个自定义的闹钟,首先要得到闹钟管理者(AlarmManager),然后得到系统当前时间。
/**
* 1.弹出时间对话框
* 2.确定好选择的时间
* 3.设置好闹钟
* 4.时间一到,执行响应(发送广播,接收广播。跳转页面)
* PendingIntent 延迟跳转 AlarmManager闹钟管理者
* Intent的组成部分:ComponementName extra Action Data Categlay(分组) Flag
*/
差不多就这么几个步骤。
闹钟可以设置一次以及多次。多次就是有一个周期(24小时响一次)。其不同之处在于:
一次:alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
多次:alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),5000, pendingIntent);
代码如下:
public class MainActivity extends AppCompatActivity { private AlarmManager alarmManager; private PendingIntent pendingIntent; private Button main_btn_alarm; private Button main_btn_alarmcycle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取闹钟管理者 alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); main_btn_alarm = (Button) findViewById(R.id.main_btn_alarm); main_btn_alarmcycle= (Button) findViewById(R.id.main_btn_alarmcycle); } //设置闹钟(响一次) public void setAlarm(View view){ //获取当前系统时间 Calendar c=Calendar.getInstance(); int hour=c.get(Calendar.HOUR_OF_DAY);//小时 int minute=c.get(Calendar.MINUTE);//分钟 /** * 1.弹出时间对话框 * 2.确定好选择的时间 * 3.设置好闹钟 * 4.时间一到,执行响应(发送广播,接收广播。跳转页面) * PendingIntent 延迟跳转 AlarmManager闹钟管理者 * Intent的组成部分:ComponementName extra Action Data Categlay(分组) Flag */ TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int i, int i1) { //设置闹钟时间,确定时间。 Calendar calendar=Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY,i); calendar.set(Calendar.MINUTE,i1); //时间一到,执行响应 Intent intent=new Intent(); intent.setAction("com.example.yang_alarm_notification.RING"); PendingIntent pendingIntent=PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0); alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent); main_btn_alarm.setText("设置闹钟时间:"+i+"时"+i1+"分"); } },hour,minute,true); main_btn_alarm.setText("设置闹钟(响一次)"); timePickerDialog.show(); } //设置闹钟(重复) public void setAlarmCycle(View view){ //获取当前系统时间 Calendar c=Calendar.getInstance(); int hour=c.get(Calendar.HOUR_OF_DAY);//小时 int minute=c.get(Calendar.MINUTE);//分钟 /** * 1.弹出时间对话框 * 2.确定好选择的时间 * 3.设置好闹钟 * 4.时间一到,执行响应(发送广播,接收广播。跳转页面) * PendingIntent 延迟跳转 AlarmManager闹钟管理者 * Intent的组成部分:ComponementName extra Action Data Categlay(分组) Flag */ TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int i, int i1) { //设置闹钟时间,确定时间。 Calendar calendar=Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY,i); calendar.set(Calendar.MINUTE,i1); //时间一到,执行响应 Intent intent=new Intent(); intent.setAction("com.example.yang_alarm_notification.RING"); pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),5000, pendingIntent); main_btn_alarmcycle.setText("设置闹钟时间:"+i+"时"+i1+"分"); } },hour,minute,true); timePickerDialog.show(); } //取消重复闹钟 public void CancelAlarmCycle(View view){ main_btn_alarmcycle.setText("设置闹钟(重复)"); alarmManager.cancel(pendingIntent); }}
我这里没有直接跳转,而是通过广播来跳转。利用Intent的Action。设置广播名字,详情请参考:http://blog.csdn.net/qq_35731570/article/details/54910216
0 0
- 安卓之闹钟
- 安卓制作闹钟
- 安卓闹钟相关
- AlarmManager安卓闹钟
- 安卓 闹钟demo
- 安卓AlarmManager(闹钟服务)
- E4A实现安卓电量闹钟
- Android闹钟拓展版【安卓闹钟可换壁纸版】
- Android小闹钟程序【安卓进化十三】
- android示例之闹钟
- Android之设置闹钟
- Android之手机闹钟
- Android之手机闹钟
- 本地通知之闹钟
- Android之闹钟
- android之闹钟
- Android之实现闹钟
- Android之设置闹钟
- JavaScript必备
- 往夜 -- 原来世界如此性感
- poj1001 java
- Node.JS阻塞与非阻塞
- jQuery动画
- 安卓之闹钟
- IOS学习笔记之Object-C(一)
- Java 并发工具类
- (一)solr6.4.1+tomcat8.5.0+jdk1.8.0_112安装Solr环境
- zookeeper学习之路二
- Android 6.0 文件读写问题
- 正则表达式的分组
- Vuejs学习系列(九)--如何在sublime是vuejs代码呈现高亮状态
- TCP/IP、Http的区别