Как отсоединить AVAudioSession - PullRequest
1 голос
/ 27 июня 2011

kAudioSessionProperty_OtherMixableAudioShouldDuck используется Для категорий аудиосеансов, которые позволяют смешивать аудио iPod с аудио приложения, указывает, должен ли уровень аудио iPod быть уменьшен в уровне, когда ваше приложение производит звук. Это свойство имеет значение FALSE (0) по умолчанию. Установите ненулевое значение, чтобы включить приглушение. Как мы можем отстегнуть это? Есть ли недвижимость?

Спасибо заранее, Chandra.

Ответы [ 2 ]

1 голос
/ 01 октября 2011

У меня был тот же вопрос, и мне было трудно заставить его работать последовательно.Я потратил много времени на исследование и отладку этого и, наконец, просто позвонил в Apple.Они сказали мне, чтобы посмотреть на пример кода крошки.Я следовал этому примеру, и все работало нормально.

Проблема заключалась в том, что существует множество различных параметров для свойств сеанса, времени и т. Д. Например, вы устанавливаете свойство и затем удаляете его или оставляете, а затем запускаете иостановить сеанс?

Вот похожий вопрос:

Аудио сессия "Ducking" сломана в iOS 4 ...?

Вот Apple'sпример кода:

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

0 голосов
/ 29 февраля 2016

Глядя на пример кода, размещенного @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)
    }
}
...