iOS 只能在播放时调整音量
iOS Volume only adjustable on Playback
开发一个 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) 来绕过这个问题,但是这种破解很丑陋并且会导致其他问题。有没有其他人体验过音量按钮不是 working/adjusting 应用内的,并且只有在音频正在播放时才有效?
我一离开应用程序,音频调整就开始工作,一回到焦点,它就停止工作,除非我开始播放音频。
我试过弄乱创建音频会话的方式和时间,但没有成功。
这最终是我们正在使用的特定库 (react-native-system-settings) 的结果,该库现已修补。如果其他用户遇到问题,修复似乎是允许 UI 在 VolumeView 中显示。否则,它不允许硬件按钮影响音量。
开发一个 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) 来绕过这个问题,但是这种破解很丑陋并且会导致其他问题。有没有其他人体验过音量按钮不是 working/adjusting 应用内的,并且只有在音频正在播放时才有效?
我一离开应用程序,音频调整就开始工作,一回到焦点,它就停止工作,除非我开始播放音频。 我试过弄乱创建音频会话的方式和时间,但没有成功。
这最终是我们正在使用的特定库 (react-native-system-settings) 的结果,该库现已修补。如果其他用户遇到问题,修复似乎是允许 UI 在 VolumeView 中显示。否则,它不允许硬件按钮影响音量。