安卓之闹钟

来源:互联网 发布:热血英豪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
原创粉丝点击