Wie zu stoppen, android Benachrichtigung Klingelton nach 30 Sekunden?
Ich Schreibe eine app, die benachrichtigt einen Benutzer, der sehr Zeit-empfindliche Informationen, und ich denke, eine Menge von Ihnen würde wollen, verwenden Sie ein Handy-Klingelton, anstatt nur die kurze Benachrichtigung sounds. Habe ich aktiviert diese Funktion, indem Sie android:ringtoneType="all"
in meinem PreferenceScreen, und es funktioniert Super, AUßER dass, wenn eine Handy-Klingelton gewählt wird, hält es spielen, für IMMER, bis der Benutzer berührt die notification-bar... wie kann ich es ausschalten, nach 30 Sekunden oder so, ohne das Abbrechen der Meldung?
heres der code, den ich verwende in meinem C2DM-Empfänger:
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notif = new Notification(....)
....
String ringtone = PreferenceManager.getDefaultSharedPreferences(context).getString("ringtone", "");
notif.sound = Uri.parse(ringtone);
notif.audioStreamType = AudioManager.STREAM_NOTIFICATION;
nm.notify(1, notif);
- offtopic: C2DM ist veraltet umschreiben, dass es mit Google Clound Messaging (GCM)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies sollte es tun.
Android nicht geben Ihnen den Zugriff zu stören mit der Benachrichtigung den Ton, aber wenn Sie haben die volle Kontrolle über den Klingelton, den Sie spielen, dann kann man es halt nach 30 Sekunden oder tun, was Sie will.
Hier bin ich davon ausgegangen, dass Sie über einen hintergrund-Dienst zum ausführen der notification.
Als einen ersten Schritt, sollten Sie die Meldung ohne Ton. Nur ein Standard, einfach taskbar notification. Dann werden wir unsere eigenen MediaPlayer Objekt zu spielen, den Klingelton für 30 Sekunden.
1) WENN SIE DIE AUSFÜHRUNG der BENACHRICHTIGUNG AUF DEN PUNKT: Erstellen Sie ein MediaPlayer-Objekt, spielen Sie den Klingelton der Benutzer abgeholt direkt nach dem starten die Meldung. Dann zählen Sie 30 Sekunden mit einem Timer und TimerTask (siehe Beispiel hier auf, wie Sie zu benutzen) oder ScheduledThreadPoolExecutor und rufen Sie MediaPlayer stop() zum stoppen des Klingeltons nach 30 Sekunden.
2) WENN SIE planen DIE MITTEILUNG FÜR EINEN SPÄTEREN ZEITPUNKT: sobald Sie Ihre Benachrichtigung erstellen eine AlarmManager und planen Sie es so, dass es ausgelöst wird gleichzeitig mit der Benachrichtigung. Ihr alarm auslösen könnte einen anderen hintergrund-Dienst, der Sie schrieb, in der Sie spielen, den Klingelton für 30 Sekunden mit einem MediaPlayer-Objekt, wie in Teil 1).
In beiden Fällen die Meldung ist immer noch da, und die Art, wie Sie spielen, werden, der Klingelton wird völlig unabhängig davon. Sie haben die volle Kontrolle über den Klingelton. Sie können auch replay es für weitere 30 Sekunden, nachdem einige geplante Zeit, wenn der Benutzer nicht überprüft hat, die Benachrichtigung der bis zu diesem Zeitpunkt (da du sagst, dass die Meldung erzielt eine sehr empfindliche Zeit, Informationen, sonst würde ich nicht Fehler der Benutzer mit Klingeltönen spielen insistingly).
Eine einfache Lösung wäre, zu kündigen, die Mitteilung nach 30 Sekunden, und eine neue erstellen.
Konnte man auch Klonen der ursprünglichen Meldung und entfernen Sie einfach den Klingelton für den neuen.