安卓闹钟

2020-11-19  本文已影响0人  陈陈_04d0

备注:利用系统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());

        }

}

}

上一篇下一篇

猜你喜欢

热点阅读