ios後臺播放音樂
2015-07-16 11:54
603 查看
1、首先在didFinishLaunchingWithOptions加如下代碼:
//后台播放音频设置
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
//让app支持接受远程控制事件
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
加了AVAudioSession在後臺的時候會上一首、暫停、下一首的一排控件出現。
2、在Supporting Files的info.plist 的required background modes選項選擇App plays audio。
3、上面設置完了就可以後臺播放,要控制上一首什麼的畫需要在didFinishLaunchingWithOptions設置:
//让app支持接受远程控制事件
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
然後再需要控制的View,的viewDidLoad和dealloc分別設置:
[self becomeFirstResponder];
[self resignFirstResponder];
在加上:
-(BOOL)canBecomeFirstResponder
{
returnYES;
}
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlPause:
{
//暫停
}
break;
case UIEventSubtypeRemoteControlPlay:
{
//播放
}
break;
case UIEventSubtypeRemoteControlPreviousTrack:
{
//上一首
}
break;
case UIEventSubtypeRemoteControlNextTrack:
{
//下一首
}
break;
default:
break;
}
}
}
這樣就可以控制音樂的上一首、下一首。暫停等操作了。
4、為了後臺控制畫面漂亮一點,可以加藝術家、歌名、照片等。需要導入MediaPlayer.framework,在該view加入頭文件,增加設置方法。
#import <MediaPlayer/MPNowPlayingInfoCenter.h>
#import <MediaPlayer/MPMediaItem.h>
-(void)configPlayingInfo
{
if(NSClassFromString(@"MPNowPlayingInfoCenter")){
NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
[dict setObject:@“愛你一萬年” forKey:MPMediaItemPropertyTitle];
[dict setObject:@“劉德華” forKey:MPMediaItemPropertyArtist]
MPMediaItemArtwork *albumArt = [ [MPMediaItemArtwork alloc] initWithImage: [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]]];
[dict setObject: albumArt forKey:MPMediaItemPropertyArtwork ];
[[MPNowPlayingInfoCenter defaultCenter]setNowPlayingInfo:dict];
}
}
5、這樣就是一個像樣的播放器了,但是播放網絡歌曲,在後臺切換,老是會閃一下,網上說是音樂停止播放,程序會suspend,
要通过申请后台taskID达到后台切换播放文件,但是試了好像沒效果,後來在每次音樂play的適合都調一下configPlayingInfo,就不閃了。
//后台播放音频设置
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
//让app支持接受远程控制事件
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
加了AVAudioSession在後臺的時候會上一首、暫停、下一首的一排控件出現。
2、在Supporting Files的info.plist 的required background modes選項選擇App plays audio。
3、上面設置完了就可以後臺播放,要控制上一首什麼的畫需要在didFinishLaunchingWithOptions設置:
//让app支持接受远程控制事件
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
然後再需要控制的View,的viewDidLoad和dealloc分別設置:
[self becomeFirstResponder];
[self resignFirstResponder];
在加上:
-(BOOL)canBecomeFirstResponder
{
returnYES;
}
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlPause:
{
//暫停
}
break;
case UIEventSubtypeRemoteControlPlay:
{
//播放
}
break;
case UIEventSubtypeRemoteControlPreviousTrack:
{
//上一首
}
break;
case UIEventSubtypeRemoteControlNextTrack:
{
//下一首
}
break;
default:
break;
}
}
}
這樣就可以控制音樂的上一首、下一首。暫停等操作了。
4、為了後臺控制畫面漂亮一點,可以加藝術家、歌名、照片等。需要導入MediaPlayer.framework,在該view加入頭文件,增加設置方法。
#import <MediaPlayer/MPNowPlayingInfoCenter.h>
#import <MediaPlayer/MPMediaItem.h>
-(void)configPlayingInfo
{
if(NSClassFromString(@"MPNowPlayingInfoCenter")){
NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
[dict setObject:@“愛你一萬年” forKey:MPMediaItemPropertyTitle];
[dict setObject:@“劉德華” forKey:MPMediaItemPropertyArtist]
MPMediaItemArtwork *albumArt = [ [MPMediaItemArtwork alloc] initWithImage: [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]]];
[dict setObject: albumArt forKey:MPMediaItemPropertyArtwork ];
[[MPNowPlayingInfoCenter defaultCenter]setNowPlayingInfo:dict];
}
}
5、這樣就是一個像樣的播放器了,但是播放網絡歌曲,在後臺切換,老是會閃一下,網上說是音樂停止播放,程序會suspend,
要通过申请后台taskID达到后台切换播放文件,但是試了好像沒效果,後來在每次音樂play的適合都調一下configPlayingInfo,就不閃了。
相关文章推荐
- iOS学习笔记-协议,代码块,分类
- iOS 单价日历 类似携程、去哪儿 可以设置价格
- IOS中const staic extern 的使用
- [原]iOS动态特性初研究(利用JSON动态创建类型和对象)
- IOS中CALayer的使用
- iOS远程消息推送
- bios
- iOS 消息推送实现 APNS
- ios7 ios8 定位兼容性问题解决方案
- 【iOS学习】一、随机数的使用
- iOS生命周期-各状态详解
- makeKeyAndVisible
- IOS的启动画面的适配问题
- ios8新特性屏幕适配之sizeclass
- iOS 8 AutoLayout与Size Class自悟
- 【金阳光测试独家播出】-IOS专项测试体系预告-7.20号更新第一集
- ios awakeFromNib 和 initWithCoder:
- IOS内购支付服务器验证模式
- <转>如何在iOS 7中设置barTintColor实现类似网易和 Facebook 的 navigationBar 效果
- iOS学习笔记-retain/assign/strong/weak/copy/mutablecopy/autorelease区别