Ich habe eine vorhandene Anwendung, die einen akustische Benachrichtigung Sound zu erzeugen, selbst war in der Lage, wenn das Gerät sein Ruftonlautstärke unter Verwendung des Alarm
Audio-Stream zum Schweigen gebracht hatte (unter der Annahme, die Alarmlautstärke war nicht Null). Das hat gut funktioniert auf Android 7.1.2Akustische Meldungen Alarmstrom zu verwenden, wenn Ruftonlautstärke zum Schweigen gebracht wird (Android Oreo)
Nach meinem Gerät Oreo (8.0.0) aktualisieren, die Benachrichtigung nicht mehr hörbar es sei denn, die Ruftonlautstärke nicht Null ist. Die App war unverändert.
Also mein Versuch, dies zu beheben, war, gegen Oreo (SDK 26) APIs neu zu kompilieren und die neuen NotificationChannel
Sachen nur um zu sehen, wenn das half, was es nicht tat.
Beachten Sie, dass dieser Code innerhalb von Service
ausgeführt wird.
Hier ist ein Codeauszug:
int importance = NotificationManager.IMPORTANCE_MAX;
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
NotificationChannel mChannel = new NotificationChannel("channel1", "Alarms", importance);
mChannel.setDescription("Alarms that alert you immediately");
mChannel.enableLights(true);
mChannel.enableVibration(true);
mChannel.setSound(defaultSoundUri,
new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ALARM)
.setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build()
);
notificationManager.createNotificationChannel(mChannel);
Notification.Builder notificationBuilder = new Notification.Builder(this,"channel1")
.setSmallIcon(R.drawable.ic_stat_ic_notification)
.setContentTitle("Alarm Message")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri, new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ALARM)
.setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build())
.setContentIntent(pendingIntent)
.setCategory(Notification.CATEGORY_ALARM)
.setPriority(Notification.PRIORITY_MAX);
Notification n = notificationBuilder.build();
n.flags = n.flags | Notification.FLAG_INSISTENT;
notificationManager.notify(0 /* ID of notification */, n);
Irgendwelche Ideen?