在Android 5.0(API 21)中,替代AudioManager.setRingerMode()的方法是什么?

17
我使用AudioManager.setRingerMode()处理应用程序中的设备音量,如下:
  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)关闭振动和声音。
  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE)关闭声音并打开振动。
  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL)打开声音并打开振动。
换句话说,我能够控制设备音量并达到所有“模式”。
但是,Android 5.0中无法仅使用AudioManager.setRingerMode来处理所有设备音量模式。
根据documentation:

将设备设置为RINGER_MODE_SILENT会导致设备进入新的优先级模式。如果将其设置为RINGER_MODE_NORMAL或RINGER_MODE_VIBRATE,则设备将离开优先级模式。

我该如何在Android 5.0中处理设备音量的所有模式(无、优先振动、优先声音、全部振动、全部声音)?

你指的是哪个通知?你是在使用通知管理器来创建它们吗? - siva
我的意思是设备的声音通知。我如何通过代码实现“完全静音”? - Eldoth
1个回答

0

通过新的5.0 API,有许多方法可用于设置铃声/振动。

setVibrate (long[] pattern)

该方法控制设备的振动。它接受一个长整型参数,其中第一个值表示在打开振动器之前等待的 毫秒数。更多详情请参考:http://developer.android.com/reference/android/os/Vibrator.html#vibrate(long[], int)}}。

http://developer.android.com/reference/android/app/Notification.Builder.html#setVibrate(long[])

setDefaults (int defaults)

这个函数设置通知的属性,例如SOUNDVIBRATEALL等等。

根据文档:

值应该是以下字段之一或多个按位或组合而成:DEFAULT_SOUND、DEFAULT_VIBRATE、DEFAULT_LIGHTS。

http://developer.android.com/reference/android/app/Notification.Builder.html#setDefaults (int defaults)

希望这可以帮到你。


我不想发送声音通知或震动。问题是关于设备声音控制的。 简单来说,我怎么可以将设备的声音控制设置为“无”? - Eldoth
在此链接中查看http://developer.android.com/reference/android/media/AudioManager.html#shouldVibrate(int)。请注意,Google建议每个应用程序处理自己的声音/振动,而不是尝试控制设备音量本身。 - user2511882
好的,我同意控制设备音量并不是一个好的做法。但是,假设我想尝试控制它,有什么办法吗? - Eldoth
好的,首先OP提到了如何处理应用程序中的通知。 OP中提供的链接还指向了5.0中的通知行为更改。如果您关心从您的应用程序中处理通知声音,则答案应该可以正常工作。如果您想要控制设备的声音,仍然可以使用RingerMode类。 http://developer.android.com/reference/android/media/AudioManager.html#setRingerMode(int). 我想OP需要更新。 - user2511882
哦,抱歉。通过通知,我想表达的是设备音量。如果我想设置我的应用程序的铃声/振动,你的答案是正确的。 使用RingerMode类,我无法达到音量设备的“无”状态。有没有办法达到这个状态? - Eldoth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接