2017-02-16 2 views
0

Ich mache eine Benachrichtigung, wenn ein Nutzer einen Videoanruf in meiner App erhält.Android-Anrufbenachrichtigung - Stoppuhr beim Klicken auf

Meine Mitteilung:

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); 

die Benachrichtigung, bis der Benutzer Antwort (oder begrenzte Zeit) zu wiederholen denke ich, einen Timer hinzuzufügen (wie erklären hier: What is the equivalent to a JavaScript setInterval/setTimeout in Android/Java?)

Aber wenn der Benutzer eine Wahl treffen, Ich möchte den Timer stoppen. Aber es gibt keinen onClickListener, nur Intent.

Wie kann ich das tun? Dank

Antwort

1

Wenn Sie Handler wie diese verwenden:

// 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; 
     } 
    }); 

der Timer wie folgt einstellen:

handler.sendEmptyMessageDelayed(MSG_SOME_MESSAGE, SOME_DELAY_IN_MILLISECONDS); 

den Timer wie folgt stornieren:

handler.removeMessages(MSG_SOME_MESSAGE); 
+0

Danke, ich scheint sei eine gute Idee. Ich werde es versuchen. Aber ich frage, ich denke nicht, einen Timer zu machen, ist es eine gute Idee. Aber ich finde keinen Weg, meine Benachrichtigung als Head-up zu behalten. –

+0

@RomainCaron Eigentlich Timer mit 'Handler' ist für Kurzzeit-Timer gedacht, d. H. Solange die Anwendung läuft. Verwenden Sie für längere Zeit [AlarmManager] (https://developer.android.com/reference/android/app/AlarmManager.html). Es wird ausgeführt, auch wenn Ihre App gerade nicht läuft (ich meine, es wird Ihre App laufen lassen, wenn sie nicht läuft). – BornToCode