Android Notification的完整例子

     这个例子有两个按钮,一个是设置简单闹铃即一次性闹铃,一个是设置重复闹铃,具体例子如下:

1、简单闹铃:20秒后执行这个闹铃。

mButton1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(RemindActivity.this, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(RemindActivity.this,0,intent,0);
        //过10s执行这个闹铃
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTimeInMillis(System.currentTimeMillis());
        calendar1.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        calendar1.add(Calendar.SECOND,20);
        //进行闹铃注册
        AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
        manager.set(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(),pendingIntent);
        Toast.makeText(mContext,"设置简单闹铃成功!",Toast.LENGTH_LONG).show();
    }
});
 
2、重复闹铃:
设定某个时间点为闹钟时间,在该时间点响铃后,设置再过2分钟响铃。
//重复闹铃
        mButton2 = (Button) findViewById(R.id.repeating_button);
        mButton2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(mContext,AlarmReceiver.class);
                PendingIntent sender = PendingIntent.getBroadcast(mContext,0,intent,0);

                long firstTime = SystemClock.elapsedRealtime();//开机之后到现在的运行时间
                long systemTime = System.currentTimeMillis();

                Calendar calendar2 = Calendar.getInstance();
                calendar2.setTimeInMillis(System.currentTimeMillis());
                calendar2.setTimeZone(TimeZone.getTimeZone("GMT+8"));
                calendar2.set(Calendar.MINUTE,mMinute);
                calendar2.set(Calendar.HOUR_OF_DAY,mHour);
                calendar2.set(Calendar.SECOND,0);
                calendar2.set(Calendar.MILLISECOND,0);

                //选择的每天定时时间
                long selectTime = calendar2.getTimeInMillis();
                //如果当前时间大于设置的时间,那么从第二天的设定时间开始
                if(systemTime > selectTime){
                    Toast.makeText(mContext,"设置的时间小于当前时间",Toast.LENGTH_SHORT).show();
                    calendar2.add(Calendar.DAY_OF_MONTH,1);
                    selectTime = calendar2.getTimeInMillis();
                }
                //计算现在时间到设置时间的时间差
                long difTime = selectTime - systemTime;
                //不管将不将此句注释掉,都是每隔一分钟闹铃响一次。
                firstTime += difTime;

                //进行闹铃注册
                AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
//                //第一个参数int type指定定时服务的类型,该参数接受如下值:
//                /*ELAPSED_REALTIME: 在指定的延时过后,发送广播,但不唤醒设备(闹钟在睡眠状态下不可用)。如果在系统休眠时闹钟触发,它将不会被传递,直到下一次设备唤醒。
//                *ELAPSED_REALTIME_WAKEUP: 在指定的延时过后,发送广播,并唤醒设备(即使关机也会执行operation所对应的组件)
//                * RTC:在指定的时刻,发送广播,但不唤醒设备,如果在系统休眠时闹钟触发,它将不会被传递,直到下一次设备唤醒(闹钟在睡眠状态下不可用)。
//                * RTC_WAKEUP:在指定的时刻,发送广播,并唤醒设备,即使系统关机也会执行 operation所对应的组件
//                * */
                //AlarmManager.ELAPSED_REALTIME_WAKEUP真实时间流逝闹钟,当闹钟发躰时唤醒手机休眠;
                //第二个参数表示闹钟首次执行时间
//                /*
//                * 第三个参数设为60*1000以下时,都是一分钟提醒一次。
//                * 第三个参数intervalTime为闹钟间隔,内置的几个变量如下:
//                * INTERVAL_DAY:      设置闹钟,间隔一天
//                * INTERVAL_HALF_DAY:  设置闹钟,间隔半天
//                * INTERVAL_FIFTEEN_MINUTES:设置闹钟,间隔15分钟
//                * INTERVAL_HALF_HOUR:     设置闹钟,间隔半个小时
//                * INTERVAL_HOUR:  设置闹钟,间隔一个小时
//                * */
                manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,2*60*1000,sender);
                Log.i(TAG,"time ="+difTime+",selectTime="+selectTime+",systemTime="+systemTime+",firstTime="+firstTime);
                Toast.makeText(mContext,"设置重复闹铃成功!",Toast.LENGTH_SHORT).show();
            }
        });
3、取消闹铃:
mButtonCancel = (Button) findViewById(R.id.cancel_button);
mButtonCancel.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(mContext,AlarmReceiver.class);
        PendingIntent sender = PendingIntent.getBroadcast(mContext,0,intent,0);
        //取消闹铃
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
        am.cancel(sender);
    }
});
4、
AlarmReceiver.java的内容同上一篇文章。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值