Kotlin - 如何扭转音量变化?
Kotlin - How to turn back volume changing?
我正在尝试通过每次更改 AudioManager
来设置 set const volume。
这是我的代码:
private val broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if ("android.media.VOLUME_CHANGED_ACTION" == intent.action) {
audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0)
}
}
}
问题在于它第 audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0)
行触发了 onReceive()
乐趣。
我需要在不触发 orReceive()
有趣或替代方法的情况下改变音量。
也许你可以这样处理?
private val broadcastReceiver = object : BroadcastReceiver() {
var wasVolumeChangedByApp = false
override fun onReceive(context: Context, intent: Intent) {
if ("android.media.VOLUME_CHANGED_ACTION" == intent.action && !wasVolumeChangedByApp) {
audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0)
wasVolumeChangedByApp = true
return
}
wasVolumeChangedByApp = false
}
设置布尔标志(表示您的应用程序修改了音量)后,将简单地忽略 onReceive() 的处理。然后重置此标志,以便之后的 onReceive 调用将按需要处理。
我正在尝试通过每次更改 AudioManager
来设置 set const volume。
这是我的代码:
private val broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if ("android.media.VOLUME_CHANGED_ACTION" == intent.action) {
audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0)
}
}
}
问题在于它第 audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0)
行触发了 onReceive()
乐趣。
我需要在不触发 orReceive()
有趣或替代方法的情况下改变音量。
也许你可以这样处理?
private val broadcastReceiver = object : BroadcastReceiver() {
var wasVolumeChangedByApp = false
override fun onReceive(context: Context, intent: Intent) {
if ("android.media.VOLUME_CHANGED_ACTION" == intent.action && !wasVolumeChangedByApp) {
audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0)
wasVolumeChangedByApp = true
return
}
wasVolumeChangedByApp = false
}
设置布尔标志(表示您的应用程序修改了音量)后,将简单地忽略 onReceive() 的处理。然后重置此标志,以便之后的 onReceive 调用将按需要处理。