iOS音量仅在播放时可调

时间:2018-08-28 15:06:38

标签: ios react-native audio volume avaudiosession

开发一个iOS应用,该应用可以分段播放音频消息(不连续播放)。打开应用程序后,我使用以下选项初始化音频会话。

func _initAudioSesh() {
    let audioSession = AVAudioSession.sharedInstance()
    do {
        if #available(iOS 10.0, *) {
            try audioSession.setCategory(
                AVAudioSessionCategoryPlayAndRecord,
                mode: AVAudioSessionModeVoiceChat,
                options: [
                    AVAudioSessionCategoryOptions.defaultToSpeaker,
                    AVAudioSessionCategoryOptions.allowBluetooth,
                    AVAudioSessionCategoryOptions.allowBluetoothA2DP
                ]
            )
        } else {
            try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
        }
    } catch {
        print("Setting category to AVAudioSessionCategoryPlayback failed.")
    }
}

然后,当准备播放音频时,我使用setActive(true)捕获焦点,并使用setActive(false)释放焦点

我遇到的问题是,在应用程序中,硬件音量按钮仅在播放音频时起作用,否则,按钮不起作用。我总是可以通过持有setActive(true)来解决这个问题,但是这种破解很丑陋,并且会引起其他问题。其他人有没有遇到过音量按钮无法在应用程序内正常工作/无法在应用程序中进行调节?

离开应用程序后,音频调整就会生效,一旦将其重新聚焦,除非我开始播放音频,否则它将停止工作。 我尝试弄乱创建音频会话的方式和时间,但没有成功。

1 个答案:

答案 0 :(得分:0)

这最终是由于我们正在使用的特定库(react-native-system-settings)而导致的,该库现已被修补。如果其他用户遇到问题,则该修补程序似乎是在允许UI在VolumeView中显示。否则,它不允许硬件按钮影响音量。