У меня есть AlarmManager
, который задан в подклассе BroadcastReceiver
с использованием подкласса Service
в качестве контекста. AlarmManager
не стреляет. Я знаю, что AlarmManager
устанавливается с правильными миллисекундами.AlarmManager With BroadcastReceiver Not Firing
Любые идеи по поводу того, почему AlarmManager не стреляет?
public class Alarm extends BroadcastReceiver
{
public static final String TAG = "Alarm";
public MediaPlayer mediaPlayer;
public AlarmManager alarmManager;
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "Alarm set off onReceive");
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
//Put to code to execute upon alarm here
//Check to see if the sounds are playing, if they are stop them.
if (mediaPlayer.isPlaying()){
//Call play will simulate the user tapping the play button which will stop the sounds.
mediaPlayer.stop();
mediaPlayer.release();
}
wl.release();
}
public void setAlarm(Context context, long milliSeconds, MediaPlayer mp)
{
//Set the mediaPlayer member var
mediaPlayer = mp;
//Figure out the time to stop the timer in milliseconds
long currentTime = System.currentTimeMillis();
long timeToSetAlarmTo = currentTime+milliSeconds;
Log.d(TAG, "Current Time = " + currentTime + "Time to add = " + milliSeconds + "Time to set timer to = " + timeToSetAlarmTo);
//Create the intent
Intent i = new Intent("SmartlifeSoftware.START_ALARM");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, i, 0);
//Set the alarm
alarmManager=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, timeToSetAlarmTo, pendingIntent);
}
public void CancelAlarm(Context context)
{
Intent intent = new Intent("SmartlifeSoftware.START_ALARM");
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmManager.cancel(sender);
}
}
Вот мой код манифеста под тег приложения
<receiver android:name="services.Alarm" android:exported="true">
<intent-filter>
<action android:name="SmartlifeSoftware.START_ALARM">
</action>
</intent-filter>
</receiver>`