Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin-如何恢复音量变化?_Android_Kotlin_Broadcastreceiver_Android Audiomanager - Fatal编程技术网

Android Kotlin-如何恢复音量变化?

Android Kotlin-如何恢复音量变化?,android,kotlin,broadcastreceiver,android-audiomanager,Android,Kotlin,Broadcastreceiver,Android Audiomanager,我试图通过每次更改来使用AudioManager设置常量音量 这是我的密码: private val broadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if ("android.media.VOLUME_CHANGED_ACTION" == intent.action) {

我试图通过每次更改来使用
AudioManager
设置常量音量

这是我的密码:

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)
            }
        }
    }
问题在于it行
audioManager.setStreamVolume(audioManager.STREAM\u RING,constDeviceVolume,0)
触发
onReceive()
fun


我需要在不触发
或receive()的情况下更改音量。
乐趣或替代方法。

也许您可以这样处理

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调用