Уведомление Android со звуком и вибрацией, проблема контекста?
Я пытаюсь сделать уведомление с пользовательским звуком и вибрацией.
Notification.Builder nb = new Notification.Builder(context)
.setContentTitle(context.getString(R.string.tickerHdr))
.setContentText(context.getString(R.string.tickerInfo))
.setSmallIcon(R.drawable.alarm)
.setAutoCancel(true)
.setWhen((new Date()).getTime());
if (isAlarm) {
nb.setSound(Uri.parse(sirenSoundPath));
nb.setVibrate(vibratePattern);
nb.setPriority(Notification.PRIORITY_MAX);
}
Notification notification = nb.build();
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager)context.getSystemService(ns);
mNotificationManager.notify(NOTIFIC_ID, notification);
Это работает, как и ожидалось, когда я звоню из деятельности. Однако мне нужно позвонить, когда получено SMS, даже если мое приложение еще не запущено. Поэтому я расширил BroadcastReceiver и переопределил onReceive (контекстный контекст, намерение намерения). Когда я создаю уведомление оттуда, оно показывает как ожидалось, но без собственного звука и вибрации. Может быть, потому что я использую контекст, полученный в onReceive? Или, может быть, это будет конфликтовать со звуком и вибрацией, которые вызывает стандартное приложение смс при получении смс? Какие-либо предложения?
Я знаю, что могу воспроизводить звук и вибрировать напрямую, например:
((Vibrator)getSystemService(Context.VIBRATOR_SERVICE)).vibrate(500);
Но я хотел бы использовать материал уведомлений, чтобы я мог получить стандартное поведение, например, отменить звук при нажатии уведомления.
(То, что я пытаюсь сделать, это получать SMS-сообщения от моего домашнего сигнала тревоги, и если он говорит мне, что мой дом горит, я бы хотел, чтобы мой телефон издал дополнительный шум, чтобы я не читал его три часа спустя.)