audio benachrichtigungstöne - Wie man einen androiden Benachrichtigungssound spielt





ändern standard (9)


Ich hatte fast die gleiche Frage. Nach einigem Nachdenken denke ich, dass, wenn Sie das Standardsystem "Benachrichtigungssound" spielen wollen, Sie ziemlich viel eine Benachrichtigung anzeigen und ihm mitteilen müssen, den Standardton zu verwenden. Und es gibt etwas, das für das Argument in einigen der anderen Antworten gesagt werden muss, dass, wenn Sie einen Benachrichtigungston spielen, Sie auch eine Benachrichtigungsnachricht präsentieren sollten.

Allerdings ein wenig Optimierung der Benachrichtigungs-API und Sie können nahe an was Sie wollen. Sie können eine leere Benachrichtigung anzeigen und diese nach einigen Sekunden automatisch entfernen. Ich denke, das wird für mich funktionieren. vielleicht wird es für dich funktionieren.

Ich habe eine Reihe von Komfort-Methoden in com.globalmentor.android.app.Notifications.java denen Sie einen Benachrichtigungston wie com.globalmentor.android.app.Notifications.java erstellen können:

Notifications.notify(this);

Die LED blinkt ebenfalls und wenn Sie eine Vibrationserlaubnis haben, wird eine Vibration auftreten. Ja, ein Benachrichtigungssymbol wird in der Benachrichtigungsleiste angezeigt, verschwindet jedoch nach einigen Sekunden.

An diesem Punkt können Sie feststellen, dass die Benachrichtigung sowieso nicht mehr angezeigt wird. Sie können also auch in der Benachrichtigungsleiste eine Laufschrift anzeigen. Du kannst das so machen:

Notifications.notify(this, 5000, "This text will go away after five seconds.");

Es gibt viele andere Komfortmethoden in dieser Klasse. Sie können die gesamte Bibliothek von ihrem Subversion-Repository herunterladen und mit Maven erstellen. Es hängt von der globalmentor-core-Bibliothek ab , die auch mit Maven erstellt und installiert werden kann.

Ich habe mich gefragt, wie ich einen Benachrichtigungston abspielen kann, ohne ihn über den Media-Stream abzuspielen. Momentan kann ich das über den Media Player tun, aber ich möchte nicht, dass es als Mediendatei abgespielt wird. Ich möchte, dass es als Benachrichtigung, Alarm oder Klingelton abgespielt wird. Hier ist ein Beispiel dafür, wie mein Code gerade aussieht:

MediaPlayer mp = new MediaPlayer();
mp.reset();
mp.setDataSource(notificationsPath+ (String) apptSounds.getSelectedItem());
mp.prepare();
mp.start();



Es ist eine Weile her, seit Sie Ihre Frage gestellt haben, aber ... Haben Sie versucht, den Audio-Stream-Typ einzustellen?

mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);

Es muss vor der Vorbereitung gemacht werden.







Sie können dies jetzt tun, indem Sie beim Erstellen einer Benachrichtigung den Sound hinzufügen, anstatt den Sound separat aufzurufen.

//Define Notification Manager
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

//Define sound URI
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext())
        .setSmallIcon(icon)
        .setContentTitle(title)
        .setContentText(message)
        .setSound(soundUri); //This sets the sound to play

//Display notification
notificationManager.notify(0, mBuilder.build());



Versuche dies:

public void ringtone(){
    try {
        Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
        r.play();
     } catch (Exception e) {
         e.printStackTrace();
     }
}



Wenn jemand immer noch nach einer Lösung für dieses Problem sucht, habe ich eine Antwort gefunden unter How to play Klingelton / Alarm Sound in Android

try {
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
    r.play();
} catch (Exception e) {
    e.printStackTrace();
}

Sie können TYPE_NOTIFICATION in TYPE_ALARM ändern, aber Sie sollten den Klingelton r im Auge behalten, um die Wiedergabe zu stoppen ... wenn der Benutzer beispielsweise auf eine Schaltfläche klickt.




Wenn Sie möchten, dass ein Standardbenachrichtigungssound abgespielt wird, können Sie die setDefaults(int) -Methode der NotificationCompat.Builder Klasse verwenden:

NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_notification)
                .setContentTitle(getString(R.string.app_name))
                .setContentText(someText)
                .setDefaults(Notification.DEFAULT_SOUND)
                .setAutoCancel(true);

Ich glaube, das ist der einfachste Weg, um Ihre Aufgabe zu erfüllen.




Ich denke, dass das Konzept von "Benachrichtigungston" für Android UI irgendwie falsch ist.

Das erwartete Android-Verhalten besteht darin, die Standardbenachrichtigung zu verwenden, um den Benutzer zu warnen. Wenn Sie einen Benachrichtigungston ohne das Statusleistensymbol abspielen, verwirren Sie den Benutzer ("Was war das für ein Geräusch? Es gibt kein Symbol hier, vielleicht habe ich Hörprobleme?").

Wie Sie den Ton für eine Benachrichtigung einstellen, finden Sie hier zum Beispiel: Einstellen des Tons für die Benachrichtigung










android audio notifications