2009-11-04 7 views
16

Так что я только что заметил, что на моем iPod Touch, когда мое приложение запускает короткий wav-файл для воспроизведения с использованием AVAudioPlayer, музыка приостанавливается. Это нормально?iPhone AVAudioPlayer останавливает фоновая музыка

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

+0

Kenny, пожалуйста, измените принятый вами ответ.0 :) –

ответ

12

Примечание: The AudioSession API has been completely deprecated in iOS 7.0

Вы не можете запустить AVAudioPlayer и плеером или MPMusicPlayer или MPMoviePlayer в то же время, не делая немного больше работы. Если вы хотите легко, используйте системные звуки Audio Toolbox.

Если вы хотите сделать некоторые дополнительные работы, то вы должны смотреть на Audio Sessions:

kAudioSessionCategory_UserInterfaceSoundEffects Для звуковых эффектов, таких как сенсорный обратной связи, взрывы, и так далее.

Эквивалент категории kAudioSessionCategory_AmbientSound , который вы должны использовать вместо. Категория kAudioSessionCategory_UserInterfaceSoundEffects категорически устарела в iPhone OS 3.0.

kAudioSessionCategory_AmbientSound Для Долгосрочные звуки, такие как дождь, автомобиль шум двигателя и т. Д. Это также для приложений стиля «играть», такое виртуальное пианино, которое пользователь играет над iPod audio.

При использовании этой категории аудио от встроенных приложений, таких как iPod, смешивается с вашим аудио. Звук вашего отключается, когда переключатель Ring/Silent отключен или когда экран заблокирован.

68

В принципе, каждому приложению назначается аудио сессия, которая моделируется как одноэлементный класс, который вы можете получить при запуске приложения и задании параметров. Образом я установил ту же проблему было через одну строку кода размещается в applicationDidFinishLaunching:

Objective-C:

[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryAmbient error:nil]; 

Свифта 2/3:

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient) 
+4

Это должен быть принятый ответ. Это вопрос и ответ на конкретный вопрос OP – er0

+0

Можете подтвердить, что это сработало для меня, а также – barfoon

+0

Удивительный! Это отлично поработало для моей игры SpriteKit. Благодаря! –

0

В зависимости в соответствии с вашими требованиями звуки системных звуков могут оказаться недостаточными, посмотрите параметры сеанса, например MixWithOthers

struct AVAudioSessionCategoryOptions : OptionSetType { 
    init(rawValue rawValue: UInt) 
    static var MixWithOthers: AVAudioSessionCategoryOptions { get } 
    static var DuckOthers: AVAudioSessionCategoryOptions { get } 
    static var AllowBluetooth: AVAudioSessionCategoryOptions { get } 
    static var DefaultToSpeaker: AVAudioSessionCategoryOptions { get } 
    static var InterruptSpokenAudioAndMixWithOthers: AVAudioSessionCategoryOptions { get } 
} 

При запуске сеанса, передайте опцию MixWithOthers, может быть, DuckOthers (понизит громкость IPOD, когда ваши воспроизведения звука) является еще одним вариантом.

 Смежные вопросы

  • Нет связанных вопросов^_^