kAudioSessionCategory_MediaPlayback отключен с выключенным звонком? - PullRequest
1 голос
/ 21 июня 2011

в соответствии с документацией правильный способ воспроизведения звуков, даже если выключатель звонка установлен в положение «выкл», выглядит так:

 UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;

    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);

Затем я по всему приложению играю короткие wav-файлы, которые прекрасно воспроизводятся с использованием

AudioServicesPlaySystemSound(sysSound)

.... до тех пор, пока звонок не будет выключен, а затем ..... тишина?

Что бы я ни делал, я не могу воспроизвести звук, если звонок выключен?

Кто-нибудь ..... пожалуйста?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

AudioServicesPlaySystemSound никогда не воспроизводится, когда звонок отключен, по моему опыту. Если вы вместо этого воспроизводите звуки с помощью AVAudioPlayer, вы должны получить искомое поведение:

let player: AVAudioPlayer = try AVAudioPlayer(contentsOf: url)
player.delegate = self
player.play()

Вам также нужно будет активировать аудиосеанс перед воспроизведением, если вы этого еще не сделали. И установите категорию аудио сеанса, которая поддерживает звуки, когда вы молчите, как вы уже сделали. Для экономии заряда аккумулятора остановите аудиосессию, когда звук не воспроизводится.

Заметное различие между AudioServices и AVAudioPlayer заключается в том, что, если звонок отключен, воспроизведение AudioServices возобновится практически сразу, в то время как AVAudioPlayer примет полную длину звука до завершения. Насколько я знаю, единственный способ обнаружить и отреагировать на настройку звонка пользователя - это использовать AudioServices вместо AVAudioPlayer. Если вы просто хотите играть в молчании, это не должно относиться к делу.

0 голосов
/ 27 июля 2011

Вы пытались использовать AudioSessionSetActive (YES); в конце?

...