【问题标题】:Notification Sound interrupting Music通知声音打断音乐
【发布时间】:2015-01-16 06:34:16
【问题描述】:

我正在尝试在不影响其他音乐播放的情况下播放通知声音

通知声音有两种播放方式

1) OS 自己通过 NotificationBuilder 播放

优点:- 处理所有在电话和其他情况下不播放声音的情况 问题:- 当播放音乐并收到通知时,它会将音频焦点从音乐转移到通知,然后根据音乐播放器应用处理音频焦点丢失的方式降低或静音音乐。

2) 每当收到通知时,我们都会通过媒体播放器播放声音

A) 在 NOTIFICATION STREAM 上播放 ---> 效果很好,但通过耳机播放时会出现闪避问题

B) 在 SYSTEM STREAM 上播放

优点:- 不会转移音频焦点,因此通知来时不会影响音乐

问题:- 我们将不得不处理其他无法在电话和 VOIP 中播放声音的情况......并且可能是目前其他未知的情况。

但我认为 Watsup 做得很好。

所以不知道怎么弄的

【问题讨论】:

    标签: android media-player android-mediaplayer android-notifications


    【解决方案1】:

    根据Android 5.0 behavior changes on notification sounds

    如果您目前正在使用RingtoneMediaPlayerVibrator 类为通知添加声音和振动,请删除此代码,以便系统可以在优先模式下正确显示通知。而是使用Notification.Builder 方法来添加声音和振动。

    将设备设置为RINGER_MODE_SILENT 会使设备进入新的优先模式。如果您将其设置为RINGER_MODE_NORMALRINGER_MODE_VIBRATE,设备将退出优先模式。

    之前,Android 使用STREAM_MUSIC 作为主流来控制平板设备的音量。在 Android 5.0 中,手机和平板设备的主音量流现已统一,由STREAM_RINGSTREAM_NOTIFICATION 控制。

    由于无法直接检测设备是否处于优先模式,因此您应始终使用Notification.Builder/NotificationCompat.Builder 方法为通知添加声音,以确保满足用户的期望。

    【讨论】:

    • 感谢您对此进行了清理。但是对于 5.0 以下的设备,我该怎么做?有什么办法吗?谢谢
    • 您不应该做任何不同的事情:NotificationCompat.Builder 应该用于所有 API 级别,因为这是在所有 API 级别、设备和处理所有边缘时提供一致体验的最佳方式您正确指出的情况。
    • 但在这种情况下,当 Google play 中播放音乐时,如果通知来自我的 App.OS,则会将音频焦点转移到我们的通知,因为它包含声音,因此 google play 会降低其音量,然后发出通知播放,然后音量恢复。但这不会发生在 Watsup 中。那么 Watsup 是如何处理这个问题的呢?
    • 是的,这就是通知声音的工作方式。其他不能以这种方式工作的应用程序不会,而且会变得更加不符合每个内置应用程序和用户的期望。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    相关资源
    最近更新 更多