设计iOS版生成音乐系统,采用了openFrameworks,我需要提供其中用户可以收听由应用程序时所产生的音乐的模式:
- 该设备被锁定
- 用户使用另一应用程序
有些应用程序般绽放,或闹钟,就像是和建议用户切换启用/禁用此功能。
任何提示是什么?
设计iOS版生成音乐系统,采用了openFrameworks,我需要提供其中用户可以收听由应用程序时所产生的音乐的模式:
有些应用程序般绽放,或闹钟,就像是和建议用户切换启用/禁用此功能。
任何提示是什么?
播放背景声音
播放或连续(即使该应用程序在后台运行)记录音频的应用程序可以注册在后台执行这些任务。 启用从功能选项卡的背景模式部分Xcode项目的音频支持。 (您也可以使通过包括在你的应用程序的Info.plist文件中的音频值UIBackgroundModes重点支持了。),其发挥在后台必须发挥音频内容,而不是沉默的音频内容的应用程式。
苹果的参考“播放和录制背景声音”
确保音频继续当屏幕锁定
对于启用/禁用此功能,我发现来启用和停用您的音频会议 ,我还没有尝试过自己,但它看起来像你所需要的。
你需要让夫妇在plist文件的变化。
即1)设定所需的背景模式,应用程序播放音频
2)组应用程序不能在后台运行NO。
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
然后,你需要写在AppDelegate中这些多码
现在,您可以轻松地运行,而手机屏幕锁音频或进入后台。
请在Xcode项目设置,以及在代码中的以下变化。
步骤1)选择在Xcode的导航项目文件。 然后,从功能部,打开背景模式小节。 背景模式列表提供给您后,打勾的音频和Airplay的开关。
STP 2)使用下面的SWIFT代码,基本上你需要为你的应用程序设置音频会议。
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
}
该音频播放会话将被发挥你的应用程序播放,即使应用程序在后台或手机处于静音模式或设备已被锁定。
看这个教程。 它有一些后台服务实例
http://www.raywenderlich.com/29948/backgrounding-for-ios
你需要让夫妇在plist文件的变化。
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)")
}
});
您也可以使用此代码:
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:NULL];
AVAudioSession *backgroundMusic = [AVAudioSession sharedInstance];
[backgroundMusic setCategory:AVAudioSessionCategoryPlayback error:NULL];