2017-02-16 5 views
0

Я делаю уведомление, когда пользователь получает видеовстречу в моем приложении.Уведомление о вызове Android - остановить таймер при нажатии

Мое уведомление:

Intent intent1 = new Intent(Intent.ACTION_CAMERA_BUTTON); 
     Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent1,0); 
     NotificationCompat.Action action = new NotificationCompat.Action(R.drawable.ic_camera_notification,"Ok",pendingIntent); 
     NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 
       .setContentTitle("TITRE !!") 
       .setContentText("Test") 
       .setPriority(Notification.PRIORITY_HIGH) 
       .setCategory(Notification.CATEGORY_CALL) 
       .setSmallIcon(R.drawable.ic_camera_notification) 
       .addAction(action) 
       .setSound(uri) 
       .setAutoCancel(true) 
       .setVibrate(new long[] { 1000, 1000}); 
     NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); 
     Notification notification = builder.build(); 
     notificationManager.notify(11,notification); 

Чтобы повторить уведомление до пользователя ответа (или ограниченное время), я думаю, чтобы добавить таймер (например, объяснить здесь: What is the equivalent to a JavaScript setInterval/setTimeout in Android/Java?)

Но когда пользователь делает выбор, Я хочу остановить таймер. Но нет onClickListener, только Intent.

Как я могу это сделать? Благодаря

ответ

1

Если вы используете Handler так:

// Message identifier 
    private static final int MSG_SOME_MESSAGE = 1234; 

    private Handler handler; 

    ... 

    handler = new Handler(new Handler.Callback() { 

     @Override 
     public boolean handleMessage(Message msg) { 
      if (msg.what == MSG_SOME_MESSAGE) { 
       // do something 
       // to repeat, just call sendEmptyMessageDelayed again 
       return true; 
      } 
      return false; 
     } 
    }); 

Установите таймер так:

handler.sendEmptyMessageDelayed(MSG_SOME_MESSAGE, SOME_DELAY_IN_MILLISECONDS); 

Отменить таймер так:

handler.removeMessages(MSG_SOME_MESSAGE); 
+0

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

+0

@RomainCaron Фактически таймер с использованием «Handler» предназначен для таймера с коротким временем, то есть до тех пор, пока приложение работает. В течение более длительного времени используйте [AlarmManager] (https://developer.android.com/reference/android/app/AlarmManager.html). Он запустится, даже ваше приложение в настоящий момент не работает (я имею в виду, что оно запустит ваше приложение, если оно не запущено). – BornToCode