似乎还有其他几个与此主题相关的问题,但我发现的每个问题都有一个解决方案,该解决方案要么不使用通知,要么不适用于最近的Android版本。我想使用通知的原因是为了确保声音的音量与用户的通知音量相对应。
问:如何播放默认通知声音,该声音不向用户显示任何内容,并响应通知音量级别?
过去常用的一种解决方案是建立通知,但不要使用图标,标题和内容。这适用于较旧的Android版本(日志E/NotificationService: WARNING: In a future release this will crash the app:
中有错误),但不再是一个选项。
其他解决方案使用MediaPlayer
或RingTone
,但这些解决方案具有不同用户音量控制的下方,这意味着声级不会与显示的通知相匹配。换句话说,如果用户的媒体和铃声音量设置得非常低,则可能听不到这些方法。
一些类似的问题无法解决这个问题:
Play notification default sound only (Android)
Android Notification to play sound only
Android Marshmallow sound only Notification?
How to play an android notification sound
这会播放正确的声音,但不会播放通知音量:
Uri uriSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
try {
RingtoneManager.getRingtone(getApplicationContext(), uriSound).play();
} catch (Exception e) {
e.printStackTrace();
}
这是一个纯声音通知,但只适用于较旧的Android版本(与文档相反):
Notification notification = new NotificationCompat.Builder(this, "channel_id")
.setDefaults(NotificationCompat.DEFAULT_SOUND)
.build();
我想要的一个例子就是谷歌的Android消息应用程序。当应用程序打开对话线程并收到新消息时,将播放通知声音并且声音正确响应通知音量级别。