kAudioSessionProperty_OtherMixableAudioShouldDuck 用于允许将 iPod 音频与应用程序音频混合的音频会话类别,指定当应用程序产生声音时是否应降低 iPod 音频的电平。默认情况下,此属性的值为 FALSE (0)。将其设置为非零值以打开闪避。我们怎样才能解开这个?有财产吗?
在此先感谢,钱德拉。
kAudioSessionProperty_OtherMixableAudioShouldDuck 用于允许将 iPod 音频与应用程序音频混合的音频会话类别,指定当应用程序产生声音时是否应降低 iPod 音频的电平。默认情况下,此属性的值为 FALSE (0)。将其设置为非零值以打开闪避。我们怎样才能解开这个?有财产吗?
在此先感谢,钱德拉。
我有同样的问题,并且很难让它始终如一地工作。我花了很多时间研究和调试这个,最后打电话给苹果。他们告诉我查看面包屑示例代码。我遵循了那个例子,一切都很好。
这里的问题是会话属性和时间等有许多不同的选项。例如,您是设置属性然后取消设置它还是离开它然后启动和停止会话?
这是一个类似的问题:
这是苹果的示例代码:
http://developer.apple.com/library/ios/#samplecode/Breadcrumb/Introduction/Intro.html
查看@zaphodtx 发布的示例代码,一种可能的解决方案是激活和停用当前音频会话。
例如,在 Swift 中:
import UIKit
import AVFoundation
class MyController: UIViewController, AVAudioPlayerDelegate{
var audioPlayer: AVAudioPlayer?
func viewDidLoad(){
super.viewDidLoad()
configureAudioSession()
}
func configureAudioSession(){
let session = AVAudioSession.sharedInstance()
do{
try session.setCategory(AVAudioSessionCategoryPlayback, withOptions: [.DuckOthers])
} catch {
print(
"Unable to configure audio session, Attempting " +
"to activate or deactivate the audio session will "
"likely not meet your expectations."
)
return
}
print("Audio Session Configured")
}
func activateAudioSession(value: Bool){
let session = AVAudioSession.sharedInstance()
try? session.setActive(value)
}
func playAudioAtPath(path:String){
audioPlayer?.stop()
let url = NSURL(fileURLWithPath: path)
if let player = try? AVAudioPlayer(contentsOfURL: url){
activateAudioSession(true)
print("Playing AVAudioPlayer Sound from path: '\(path)'")
player.volume = volume
player.delegate = self
player.play()
audioPlayer = player
} else {
print("Failed to play AVAudioPlayer Sound from path: '\(path)'")
audioPlayer = nil
}
}
func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) {
activateAudioSession(false)
}
}