美文网首页
安卓闹钟

安卓闹钟

作者: 陈陈_04d0 | 来源:发表于2020-11-19 10:12 被阅读0次

    备注:利用系统AlarmManager 管理闹钟,如果需要后台闹钟提示需要servicer保活,不然app杀死还是收不到。

    Intent intent =new Intent(this, StartReceiver.class);//注册跳转

    intent.setAction("SMSAlarm");//定义一个action 防止获取的时候null

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);//因为我使用的是广播接收所以getBroadcast()根绝自己的类型get 不然收不到闹钟

    AlarmManager alarmManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);//管理者对象

    Calendar calendar = Calendar.getInstance(); // Calendar  对象

    1、单次闹钟

    calendar.setTimeInMillis(System.currentTimeMillis());//设置当前时间

    calendar.add(Calendar.SECOND,30);//设置闹钟30s 后响应

    if (alarmManager !=null)

    alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);


    2、重复闹钟    //如果设置的时间小于当前时间会即时发送广播,间隔时间超过50分钟会延迟几分钟才发送

    int INTERVAL = 1000 * 60 * 60 * 24;// 24h

    calendar.set(Calendar.HOUR_OF_DAY, 21);//定义每天九点闹钟一次

    calendar.set(Calendar.MINUTE, 00);

     calendar.set(Calendar.SECOND, 00);

     calendar.set(Calendar.MILLISECOND, 0);

    if (alarmManager !=null)

    alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),INTERVAL ,pendingIntent);


    接收广播别忘了Manifast注册 

    /**

    * 因为我这边有个开机自启的功能,所以写一起了,判断getAction 就好了

    */

    public class StartReceiverextends BroadcastReceiver {

    public StartReceiver() {

    }

    @Override

        public void onReceive(Context context, Intent intent) {

    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {   //监听开机启动

                 Intent i =new Intent(context, MainTabActivity.class);

                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                context.startActivity(i);

            }

    if (intent.getAction().equals("SMSAlarm")) {

        Log.e("intent", "qeqeeqe" +"=" + intent.getAction());

            }

    }

    }

    相关文章

      网友评论

          本文标题:安卓闹钟

          本文链接:https://www.haomeiwen.com/subject/aijkiktx.html