it-swarm.com.de

So zeigen Sie eine Benachrichtigung ohne Java-Sound an

Wie kann ich eine Benachrichtigung erstellen, die beim Erstellen keinen Ton erzeugt? Ich baue eine Benachrichtigung und meine Benutzer mögen die Tatsache nicht, dass sie einen Ton erzeugt.

Wie kann ich es in einen lautlosen/überhaupt keinen Ton ändern?  

Wie zeige ich eine Benachrichtigung an:

Android.support.v7.app.NotificationCompat.Builder builder = new Android.support.v7.app.NotificationCompat.Builder(main);
builder.setStyle(new Android.support.v7.app.NotificationCompat.BigTextStyle().bigText(text));
builder.setSmallIcon(R.drawable.app);
builder.setContentTitle("Rooster Maandag:");
builder.setOngoing(false);
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
builder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
notificationManager = (NotificationManager) main.getSystemService(main.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, builder.build());

Ich habe versucht, bei Google zu suchen, aber das einzige Ergebnis, das ich bekomme, ist, wie man einen Sound abspielt, nicht wie man einen Sound spielt ...

Edit Es ist möglicherweise ein Duplikat in den Augen einiger Leute, aber in meinem konnte ich keine Alternative für den dort angegebenen Standard finden, während diese neue Methode setDefaults heißt

9
Jason

Entfernen Sie die Zeile zu builder.setDefaults(Notification.DEFAULT_ALL);. Der Ton wird nicht abgespielt, Sie müssen jedoch ggf. alle anderen Benachrichtigungsvorgaben aktivieren

8

In Android O funktionierte es für mich mit diesen Einstellungen in der Benachrichtigung:

                .setGroupAlertBehavior(GROUP_ALERT_SUMMARY)
                .setGroup("My group")
                .setGroupSummary(false)
                .setDefaults(NotificationCompat.DEFAULT_ALL)

Um den Ton in OREO 8.1 zu deaktivieren, ändern Sie die Priorität der Benachrichtigung auf LOW. Der Ton der Benachrichtigung wird deaktiviert:

NotificationManager.IMPORTANCE_LOW

Der Code ist wie folgt:

NotificationChannel chan1 = new NotificationChannel("default", "default", NotificationManager.IMPORTANCE_LOW);
5
Kuldip Sharma

Ich könnte zu spät kommen, möchte dies aber dennoch hinzufügen. Sie können den Ton mit .setSound(null) unter NotificationCompat.Builder builder Für alle Betriebssysteme unter O deaktivieren.

Für O-Version n oben channel.setSound(null,null) hinzufügen, nachdem NotificationChannel channel Erstellt wurde

Alle oben genannten Lösungen sind entweder veraltet oder beziehen sich nur auf einige Betriebssystemversionen

4
rana

Es funktioniert für mich in Android Oreo.

Du solltest deinen Kanal einfach so schreiben:

NotificationChannel notificationChannel = new NotificationChannel("Id" , "Name", NotificationManager.IMPORTANCE_DEFAULT);
            notificationChannel.setSound(null, null);
            notificationChannel.setShowBadge(false);
            notificationManager.createNotificationChannel(notificationChannel);
3
Михаил

Verwenden Sie dies, wenn Sie alle Benachrichtigungen (Ton, Vibration und Licht) in Benachrichtigungen erhalten möchten.

builder.setDefaults(Notification.DEFAULT_ALL);

Oder Sie können Elemente basierend auf Ihren Anforderungen aktivieren oder deaktivieren. 

builder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);

kommentieren Sie diese Zeile, wenn Sie nichts wollen. 

2
albeee

Um Benachrichtigungen mit beliebiger Priorität anzeigen zu können, müssen Sie einen Sound einstellen, der eigentlich Stille ist. Generieren Sie einfach etwas Silence.mp3, legen Sie es im "raw" -Ordner ab und legen Sie die Benachrichtigungstöne mit Uri fest:

Uri.parse("Android.resource://"+YOUR_APP_PACKAGE_NAME+"/"+R.raw.silence) 

Sie können dieses .mp3 mit einer App wie Audacity erstellen. Es hat die Möglichkeit, Stille zu erzeugen. Legen Sie einfach fest, wie viele Sekunden und Sie sind gut zu gehen.

Wenn Sie die Standardeinstellungen auf 0 und den Ton auf Null setzen, wird die Benachrichtigung angezeigt, ohne dass Sie sie hören. Sie können jedoch keine Benachrichtigungen mit höherer Priorität anzeigen.

1
user1540907

verwenden Sie diesen genauen Code:

NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_DEFAULT);

NOTIFICATION_CHANNEL_ID --> random String.
channelName ==> random string
0
Ramy Bakkar