我试图通过AudioManager
设置const 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调用将根据需要进行处理。