Вопрос по audio, ios – Как обработать фоновое воспроизведение звука, когда устройство iOS заблокировано или в другом приложении?

22

При проектировании генеративной музыкальной системы для iOS с использованием OpenFrameworks мне необходимо обеспечить режим, в котором пользователь мог бы слушать музыку, создаваемую приложением, когда:

the device is locked the user uses another application

Некоторые приложения, такие как BLOOM или будильник, работают подобным образом и предлагают пользователям переключатель для включения / отключения этой функции.

Любые советы для этого?

Ваш Ответ

6   ответов
29

то есть  1) Установите необходимый фоновый режим, чтобы приложение воспроизводило аудио

2) установите приложение не работает в фоновом режиме на NO.

 NSError *setCategoryErr = nil;
 NSError *activationErr  = nil;
 [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
 [[AVAudioSession sharedInstance] setActive:YES error:&activationErr];

Затем вам нужно написать много кода в AppDelegate

Теперь вы можете легко запускать звук, когда экран телефона блокируется или уходит в фоновом режиме.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
-2

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:NULL];

AVAudioSession *backgroundMusic = [AVAudioSession sharedInstance];

[backgroundMusic setCategory:AVAudioSessionCategoryPlayback error:NULL];
2

а также в коде.

Шаг 1) Выберите файл вашего проекта в Навигаторе XCode. Затем в разделе «Возможности» включите подраздел «Фоновые режимы». После того, как вам будет предоставлен список фоновых режимов, поставьте галочку на Audio & amp; Переключатель трансляции.

STP 2) Используйте следующий быстрый код, в основном вам нужно установить аудио сеанс для вашего приложения.

var audioPlayer : AVAudioPlayer!

@IBAction func playButtonClicked(sender : AnyObject){

    let dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
    dispatch_async(dispatchQueue, {

        if let data = NSData(contentsOfFile: self.audioFilePath())
        {
            do{
                let session = AVAudioSession.sharedInstance()

                try session.setCategory(AVAudioSessionCategoryPlayback)
                try session.setActive(true)

                self.audioPlayer = try AVAudioPlayer(data: data)
                //self.audioPlayer.delegate = self
                self.audioPlayer.prepareToPlay()
                self.audioPlayer.play()
            }
            catch{
                print("\(error)")
            }
        }
    });
}

func audioFilePath() -> String{

    let filePath = NSBundle.mainBundle().pathForResource("mySong", ofType: "mp3")!
    return filePath
}

Этот сеанс воспроизведения аудио будет воспроизводить воспроизведение вашего приложения, даже если приложение находится в фоновом режиме или телефон находится в беззвучном режиме или устройство заблокировано.

1
0

1) Установите необходимый фоновый режим, чтобы приложение воспроизводило аудио

2) установите приложение не работает в фоновом режиме на NO.

let dispatchQueue = DispatchQueue.global()
            dispatchQueue.async(execute: {
                    do{
                        let session = AVAudioSession.sharedInstance()

                        try session.setCategory(AVAudioSessionCategoryPlayback)
                        try session.setActive(true)

                        self.isObjectAllocate = true
                        if self.isPlayed == false{
                            self.playSound(soundName: "http://radio.zahraun.com:8000/live.m3u"),
                            self.isPlayed = true
                            self.btnPlayAudio.setImage(#imageLiteral(resourceName: "pause") , for: .normal)

                        }else{
                            self.audioPlayer.pause()
                            self.isPlayed = false
                            self.btnPlayAudio.setImage(#imageLiteral(resourceName: "audioPlay"), for: .normal)
                        }
                    }
                    catch{
                        print("\(error)")
                    }
            });
34

Playing Background Audio

An app that plays or records audio continuously (even while the app is running in the background) can register to perform those tasks in the background. You enable audio support from the Background modes section of the Capabilities tab in your Xcode project. (You can also enable this support by including the UIBackgroundModes key with the audio value in your app’s Info.plist file.) Apps that play audio content in the background must play audible content and not silence.

Справочник Apple "Воспроизведение и запись фонового аудио"

Обеспечение продолжения звука при блокировке экрана

Для включения / отключения этой функции я нашелАктивация и деактивация вашей аудио сессииЯ сам не пробовал, но похоже, что тебе нужно.

Error: User Rate Limit Exceededstackoverflow.com/questions/10504432/… gluon
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededdeveloper.apple.com/library/ios/qa/qa1626/_index.html
Error: User Rate Limit Exceeded gluon
Error: User Rate Limit Exceeded

Похожие вопросы