Updateсигнализация не срабатывает в определенный момент времени
обслуживание Сигнализация не попадающего на на выбранную дату и время.
add_task_frag (фрагмент, который вызывает тревогу):
Intent intent = new Intent(getActivity(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getService(getActivity(), 0, intent, 0);
AlarmManager am = (AlarmManager)getActivity().getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, 5000, pendingIntent);
Сигнализация должна идти через 5 секунд, но этого не происходит. если я ставлю этот код (для отложенного умысла)
PendingIntent pendingIntent = PendingIntent.getActivity(getActivity(), 0, intent, 0);
затем сигнал идет сразу же после нажатия кнопки, а не после 5 секунд.
Ниже тревоги класс приемника:
super.onCreate(savedInstanceState);
PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Wake Lock");
wakeLock.acquire();
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
setContentView(R.layout.alarm);
Button stopalarm = (Button)findViewById(R.id.stop);
stopalarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mediaPlayer.stop();
finish();
}
});
playSound (this, getAlarmUri());
}
private void playSound (Context context, Uri alert){
mediaPlayer = new MediaPlayer();
try{
mediaPlayer.setDataSource(context, alert);
final AudioManager audioManager = (AudioManager)context.getSystemService(AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0){
mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mediaPlayer.prepare();
mediaPlayer.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private Uri getAlarmUri(){
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if (alert == null){
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (alert == null){
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
}
}
return alert;
}
@Override
protected void onStop() {
super.onStop();
wakeLock.release();
}
Примечание о RTC действительно помогло. – LadyWoodi