【问题标题】:Play sound in Android notifications although phone silent mode is set尽管设置了手机静音模式,但在 Android 通知中播放声音
【发布时间】:2013-05-15 21:42:39
【问题描述】:

我的应用正在显示通知,当显示通知时,会播放声音。但是当我的手机处于“静音模式”时,不会播放通知。尽管设置了静音模式,但我想“覆盖”音量设置并播放声音。有办法吗?

【问题讨论】:

  • 如果你在重要会议中为手机设置了静音模式,但仍然从一个应用程序中收到通知声音,你会高兴吗?这是用户设置静音模式的原因。
  • 是的,因为我的应用会有这样的选项:“尽管设置了静音模式,但播放声音”,所以用户可以使用或不使用此功能;)
  • 所以唯一的解决办法是将模式改为正常,播放通知声音,然后重新设置静音模式。
  • 在某些情况下您仍想覆盖此功能。例如,如果您想从蓝牙设备 ping 手机以找到它。那么在 100% 的情况下,即使手机处于静音模式,您也会希望手机能够发出声音。

标签: android audio notifications silent


【解决方案1】:
AudioManager am;
am= (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

【讨论】:

  • 感谢您的回答。如何将它与通知一起使用?是否应该在调用 myNotificationManager.notify 之前设置 RINGER_MODE_NORMAL 并在之后再次将其设置为静默?这是正确的做法吗?
  • 它不起作用:(我将模式设置为正常,然后显示通知,然后我再次将其设置回静音,但没有声音...如果我没有将其设置回静音,声音播放...我希望 NotificationManager.notify 在显示通知时有一个回调来执行代码:(
【解决方案2】:

使用它来启用通知声音 -

Settings.System.putInt(getContentResolver(),android.provider.Settings.System.NOTIFICATION_SOUND, 1);

不要忘记在清单中授予权限 -

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

【讨论】:

  • 它是什么?这个是一样的吗?:AudioManager am; am= (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE); am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
  • 它会修改系统设置为您的通知播放声音。如果它不适合您尝试不同的设置,如SOUND_EFFECTS_ENABLEDVOLUME_NOTIFICATIONVOLUME_SYSTEM。详细列表请参考this
  • -1:需要额外的权限,我认为用户不会乐意更改他的设置。还有其他方法可以实现这一点,既不那么麻烦又给用户更好的体验。
【解决方案3】:

您好,您可以使用 MediaPlayer 作为通知声音,方法是在显示通知时启动一个播放 MediaPlayer 的服务。

要停止声音,请在通知的 PendingIntent 的 BroadCastReceiver 中停止服务。

另外,不要忘记在通知取消时停止声音。

【讨论】:

  • 我认为您的回答可能是一个很好的方法。我试试看,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 2017-09-24
相关资源
最近更新 更多