ios - iOS音量仅在播放时可调

标签 ios react-native audio volume avaudiosession

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

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)来解决这个问题,但是这种黑客很难看,并且会引起其他问题。是否还有其他人遇到过音量按钮无法在应用程序内正常工作/无法进行调整的情况,只有在正在播放音频时才能正常工作?

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

最佳答案

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

关于ios - iOS音量仅在播放时可调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52061078/

相关文章:

android - 如何在社交媒体(whatsapp,gmail等)上共享/发送音频文件,android studio

ios - Nest iOS App 如何获取 SSID 列表

objective-c - 使用 NSPredicate 过滤时返回非常困惑的结果

react-native - TouchableOpacity 使整个屏幕在 React Native 中可触摸

javascript - 如何检查用户名在 Firebase 中是否唯一

android - 添加产品口味以响应本地android项目

iphone - AUMixer之后的RemoteIO回调

ios - 在Flutter中安装 native iOS Pod

objective-c - 贝塞尔路径看是否交叉

c++ - 立体声乒乓延迟 C++