ios後臺播放音樂

来源:互联网 发布:java电信计费系统 编辑:程序博客网 时间:2024/06/10 09:02
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,就不閃了。
0 0
原创粉丝点击