Я разработал приложение, которое запускает пользовательскую службу, которая запускает обратный отсчет времени.Служба запускает уведомление о старте таймера и прочее о финише.Во время тестов я вижу проблему с уведомлением и экраном блокировки.Я описываю тесты, которые я провел:
1) Если я запускаю приложение и не позволяю телефону выключиться или заблокироваться, служба воспроизводит звук уведомления правильно, как если бы основное приложение (действие) находилось впереди какне.В обеих ситуациях служба прекрасно запускает уведомления.
2) Если я заблокировал телефон, а приложение было заблокировано до блокировки, служба воспроизводит звук уведомления правильно.
3) Вот мойпроблема: если я заблокировал телефон и приложение не было спереди перед блокировкой, уведомление не звучит, но служба выглядит как запущенная, потому что когда я нажимаю кнопку «вкл» в моем телефоне, то сразу после включения экрана, он воспроизводит уведомление (звук и значок) прямо на экране блокировки, прежде чем я могу разблокировать телефон.
Мой код в службе отменяет предыдущее уведомление, это код, который запускает уведомление после окончания таймера:
private void notificacion_fin() {
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(0);
Notification not = new Notification();
// Ponemos la nueva notificacion de que hemos acabado
SharedPreferences preferences = this.getSharedPreferences("com.fsp.mypref", 0);
String not_sound = preferences.getString("notification_tone","");
not.audioStreamType = AudioManager.STREAM_NOTIFICATION;
not.sound = Uri.parse(not_sound);
if (tipo_cronometro == 1) {
not.icon = R.drawable.ic_stat_notify_time;
not.tickerText = "Task has finished";
} else {
not.icon = R.drawable.ic_stat_notify_complete;
not.tickerText = "Type 2 task has finished";
}
not.when = System.currentTimeMillis();
not.defaults |= Notification.DEFAULT_VIBRATE;
not.vibrate = new long[] {300,300,300,300,300};
not.flags |= Notification.FLAG_AUTO_CANCEL;
Intent notificationIntent = new Intent(this, MyActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
not.setLatestEventInfo(this, "My app", not.tickerText, contentIntent);
notificationManager.notify(0, not);
notificacion = true;
}
Я подозреваю, что моя проблема может быть связана с контекстом, может быть?Кто-нибудь знает, что может происходить?почему в моем 3-м тесте не работает правильно?
Любая помощь будет приветствоваться.
Заранее спасибо.
PS: Когда я говорю звук уведомления, я имею в виду звук + значок