2

kAudioSessionProperty_OtherMixableAudioShouldDuck 用于允许将 iPod 音频与应用程序音频混合的音频会话类别,指定当应用程序产生声音时是否应降低 iPod 音频的电平。默认情况下,此属性的值为 FALSE (0)。将其设置为非零值以打开闪避。我们怎样才能解开这个?有财产吗?

在此先感谢,钱德拉。

4

2 回答 2

1

我有同样的问题,并且很难让它始终如一地工作。我花了很多时间研究和调试这个,最后打电话给苹果。他们告诉我查看面包屑示例代码。我遵循了那个例子,一切都很好。

这里的问题是会话属性和时间等有许多不同的选项。例如,您是设置属性然后取消设置它还是离开它然后启动和停止会话?

这是一个类似的问题:

音频会话“闪避”在 iOS 4 中中断...?

这是苹果的示例代码:

http://developer.apple.com/library/ios/#samplecode/Breadcrumb/Introduction/Intro.html

于 2011-10-01T02:00:36.763 回答
1

查看@zaphodtx 发布的示例代码,一种可能的解决方案是激活和停用当前音频会话。

示例中的具体文件为: https ://developer.apple.com/library/ios/samplecode/Breadcrumb/Listings/Breadcrumb_BreadcrumbViewController_m.html#//apple_ref/doc/uid/DTS40010048-Breadcrumb_BreadcrumbViewController_m-DontLinkElementID_6

例如,在 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)
    }
}
于 2016-02-29T13:57:29.863 回答