Android 5.0 (API 21) 中 AudioManager.setRingerMode() 的替代方案
Posted
技术标签:
【中文标题】Android 5.0 (API 21) 中 AudioManager.setRingerMode() 的替代方案【英文标题】:Alternative for AudioManager.setRingerMode() in Android 5.0 (API 21) 【发布时间】:2015-02-06 20:53:03 【问题描述】:我使用 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 中处理设备音量的所有模式(无、振动优先、声音优先、全部振动、全部声音)?
【问题讨论】:
您指的是哪个通知?您是否使用通知管理器来创建它们? 我的意思是设备的声音通知。如何通过代码达到“完全沉默”? 【参考方案1】:使用新的 5.0 API,有许多方法可用于设置铃声/振动。
setVibrate (long[] pattern)
此方法控制设备的振动。需要很长时间,其中第一个值表示在打开vibrator
之前要等待的milliseconds
的数量。更多详情:
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)
这一项设置通知属性,即SOUND
、VIBRATE
、ALL
等。
来自文档:
该值应为以下一个或多个字段与 按位或:DEFAULT_SOUND、DEFAULT_VIBRATE、DEFAULT_LIGHTS。
http://developer.android.com/reference/android/app/Notification.Builder.html#setDefaults(整数默认值)
希望这会有所帮助。
【讨论】:
我不想发送声音通知或振动。问题是关于设备的声音控制。简而言之,如何将设备的声音控制设置为“无”? developer.android.com/reference/android/media/….. 检查链接中的第一行..Google 建议每个应用处理自己的声音/振动,而不是尝试控制设备本身的音量.. 好的,我同意尝试控制设备音量不是一个好习惯。但是,假设我想尝试控制它。有什么办法吗? 好的,首先OP提到了在应用程序中处理通知。 OP 中提供的链接还指向 5.0 中的通知行为更改。如果您担心处理来自您的应用程序的通知声音,那么答案应该可以正常工作。如果您正在谈论控制设备的声音,您仍然可以使用 RingerMode 类。 developer.android.com/reference/android/media/…。我猜需要更新 OP。 哦,对不起。通过通知,我想指的是设备音量。如果我试图设置我的应用程序的铃声/振动,你的答案是正确的。使用 RingerMode 类,我无法达到音量设备的“无”状态。有没有办法达到这个状态?以上是关于Android 5.0 (API 21) 中 AudioManager.setRingerMode() 的替代方案的主要内容,如果未能解决你的问题,请参考以下文章
Android 5.0(API 21)以下系统兼容(retrofitokhttp)
如何在 Camera2 API Android 5.0 中获取单个预览帧?
Eclipse 中所有 API 级别的 Android 5.0 FAB 按钮