2013-06-12 5 views
0

Итак, я, кажется, упал в кроличью нору, пытаясь выяснить, как лучше всего уведомить пользователя о срабатывании тревоги.Лучший способ оповестить пользователя о тревоге

В принципе, я хочу, чтобы какое-то уведомление/диалог появлялось в определенное время, и оно должно возникать независимо от того, что делает пользователь, и блокировать дальнейшее использование до тех пор, пока оно не будет принято (отклонено или иным образом).

Прямо сейчас у меня есть AlarmManager, и зарегистрированный с ним BroadcastReceiver начинает новую услугу.

Каждый раз, когда я думал, что направляюсь в правильном направлении, я столкнулся с проблемой, когда у кого-то в Интернете была аналогичная проблема, и ему сказали: «Не делайте этого так». (Например, если у вас есть услуга, создайте/покажите AlertDialog.)

Я надеялся, что кто-то может дать мне краткий список того, какова будет их рекомендация; Мне не нужен код (по крайней мере, я не должен), просто абстракция высокого уровня.

ответ

0

Идите с уведомлением, которое может воспроизводить звук, возможно, что привлечет внимание вашего пользователя к вашему уведомлению, как это делает будильник по умолчанию.

И сделайте уведомление постоянным. Которые не могут быть удалены пользователем до тех пор, пока не будет выполнено какое-либо действие для изменения состояния уведомления.

Android: How to create an "Ongoing" notification?

Диалоги этой ситуации будет раздражать меня. Документы также предлагают не использовать их в этих сценариях.

+0

Это приложение тревоги, хотя; Я вроде ХОЧУ это быть раздражающим. Я хотел бы что-то похожее на то, что делает приложение для будильника: всплывающее диалоговое окно, которое заставляет пользователя действовать, а если отловлено - или что-то подобное - THEN задает уведомление, которое может быть принято позже. Что показывает приложение по умолчанию, когда будильник сначала отключается (меню с отсрочкой/увольнением) НЕ диалог? – UnsettlingTrend

0

Я сделал это таким образом, и он отлично работает для меня.

Создать класс и называем это что-то вроде ScheduledService простирается IntentService, в этом классе вы будете делать то, что вы хотите делать, когда тревога уходит.

public class ScheduledService extends IntentService { 

public ScheduledService() { 
    super("My service"); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    //Do something, fire a notification or whatever you want to do here 
    Log.d("debug", "Ring Rind !"); 

} 
} 

тогда в вас активности, чтобы начать сигнализации используйте следующее:

AlarmManager mgr = (AlarmManager) YourActivity.getSystemService(Context.ALARM_SERVICE); 
Intent i = new Intent(YourActivity, ScheduledService.class); 
PendingIntent pi = PendingIntent.getService(YourActivity, 0, i, 0); 
mgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + PERIOD, pi); 

Какой ПЕРИОДА после сколько миллисекунд вы хотите, чтобы сигнал тревоги погаснет.

Для отмены остановки таймера и отменить использование будильника:

if (mgr != null) 
     mgr.cancel(pi); 

Наконец, чтобы все это работает, вам нужно зарегистрировать ScheduledService класса в качестве службы. В вашем манифесте добавить это Tou приложения:

<application 
    ... /> 
    ... 
    <service android:name=".ScheduledService" > 
    </service> 

</application> 

Таким образом, ОС Android будет заботиться о стрельбе тревоги, когда пришло время. даже если другое приложение запущено или даже если ваш процесс приложения завершен.

Надеюсь, что эта помощь. С уважением.

Просто сумасшедшая идея: Создайте активность и установить его тема будет весь экран, без заголовка и кнопки, чтобы остановить сигнал тревоги, может быть, вместо того, чтобы делать уведомление просто сделать намерение, которое начинается, что деятельность " возможно, вам понадобится «This», чтобы работать, даже когда телефон заблокирован и воспроизводит некоторые раздражающие звуки, «This» может помочь, когда начнется действие. вы также можете переопределить onBackPressed(), чтобы ничего не делать.

+0

Я ценю этот комментарий, но у меня уже есть часть планирования аварийных сигналов; Мне интересно, как наилучшим образом предложить пользователю диалог/предупреждение, когда придет время. – UnsettlingTrend

+0

Я отредактировал свой ответ. –

Смежные вопросы