当应用程序被杀时警报不会响起

时间:2017-01-20 02:35:55

标签: java android

在销毁应用程序后,我应该如何实现警报以打开解除/暂停屏幕?只要应用程序保持运行,我的闹钟就能正常工作,这就是我安排闹钟的方式:

//instantiate calendar to call alarm on time match
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());

//if time is set earlier than current (e.g set for 6:59pm, currently 7pm), do not play until next clock cycle/day
if(calendar.before(Calendar.getInstance())) {
    calendar.add(Calendar.DATE, 1);
}

//cancel any currently pending intents if toggle button is toggled on
Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT).cancel();

//add parameters to pass to activities that play the alarm
myIntent.putExtra("stream",stream);
myIntent.putExtra("seconds",snoozeSeconds);
myIntent.putExtra("link",ytLink);

//create pending intent to broadcast to activity that plays the alarm
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, 0);
alarmManager.setExact(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);

我使用的接收器相当简单:

public class AlarmReceiver extends WakefulBroadcastReceiver {

    @Override
    public void onReceive(final Context context, Intent intent) {
    //....
    MainActivity.ringtone.play();
    Intent alarmIntent = new Intent(context, AlarmActivity.class);
    context.startActivity(alarmIntent); //start dismiss screen

2 个答案:

答案 0 :(得分:1)

根据你的问题,这就是我的理解,让我知道如果误解了你的问题

如果您想在App关闭或设备重启后打开/激活您的alaram 然后你在AlarmReceiver AndroidManifest.xml中添加了intent过滤器android.intent.action.BOOT_COMPLETED,你可以管理你的AlarmReceiver onReceive方法上的动作

请检查以下代码

public void onReceive(Context context, Intent intent) {
if(intent == null){
return;
}
String action = intent.getAction();
if (action != null && action.equalsIgnoreCase("android.intent.action.BOOT_COMPLETED")) {
}

AlarmReceiver.completeWakefulIntent(intent);

}

在AndroidManifest.xml文件中添加意图过滤器操作

<receiver android:name="com.monster.android.Services.AlarmReceiver"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>

答案 1 :(得分:0)

您可以使用stopService()方法:

 stopService(new Intent(MainMenu.this, AlarmActivity.class));