Я работаю над приложением Podcast. Это воспроизводит аудио, используя тип сеанса AVAudioSessionCategoryPlayback
. Это делает почти все, что я хочу сделать. Он приостанавливает другую музыку, ее прерывают, когда приходит вызов и вообще работает точно так, как я хочу.Обнаруживать, когда AVAudioSession «Ducked»
С исключение. Когда воспроизводится звук с более высоким приоритетом (например, при запуске приложения «от поворота к повороту»), звук в моем приложении сбрасывается громкостью, но продолжает работать. Это создает ужасное смешивание двух голосов, которые нежелательны. Вместо этого я предпочел бы, чтобы звук в моем приложении приостанавливался во время переигранного звука, а затем продолжайте снова, как только он закончится.
Я попытался изменить различные свойства AVAudioSession, такие как AVAudioSessionCategoryOptionMixWithOthers
, но они изменяют только то, как звуки с более низким приоритетом смешиваются с моим приложением. Они не меняют, как моя смешивается с более высокоприоритетными звуками. Я также пробовал наблюдать за свойством otherAudioPlaying
sharedSession
, но это не сработало, когда я эти короткие клипы накладываются.
Есть ли способ обнаружить, когда звук в моем приложении уклоняется, чтобы я мог вместо этого сделать паузу? Или, альтернативно, чтобы предотвратить удержание звука моего приложения, чтобы он воспринимал эти другие звуки как прерывания?
Спасибо.
Вы пытались использовать 'kAudioSessionBeginInterruption' и' kAudioSessionEndInterruption'? – iwasrobbed
Да, но оверлейная утка не считается «прерыванием» в отношении AVAudioSession. Таким образом, эти обратные вызовы/уведомления не запускаются. –
Возможно, вы захотите подать радар с Apple об этом, если вы считаете, что это должно быть. На мой взгляд, логично, что это следует рассматривать как прерывание аудио сессии. – iwasrobbed