iOS後臺音頻播放及鎖屏界面顯示音頻信息

iOS後臺播放音樂及用戶交互處理

後臺播放是任何一個音頻軟件都支持的功能,在上一篇博客中,詳細介紹了使用AVAudioPlayer播放音頻的方法,這篇博客將對後臺的處理作介紹,關於播放與設置音頻的博客地址:http://my.oschina.net/u/2340880/blog/420129session

1、設置後臺播放

iOS設置後臺音頻播放的步驟很是簡單,首先須要在系統設置的plist文件中添加一個鍵Required background modes,值爲App plays audio or streams audio/video using AirPlay,以下:app

而後進行以下代碼設置:iphone

    AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setActive:YES error:nil];
    [session setCategory:AVAudioSessionCategoryPlayback error:nil];

此時播放音頻時咱們點擊HOME回到主頁面,會發現音頻不會停,已經實現後臺播放的功能。ide

2、設置後臺用戶交互

在appDelegate中,咱們須要先註冊響應後臺控制:函數

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

而後在appDelegate中咱們實現以下函數處理後臺傳遞給咱們的信息:ui

-(void)remoteControlReceivedWithEvent:(UIEvent *)event{
    if (event.type==UIEventTypeRemoteControl) {
        NSLog(@"%ld",event.subtype);
    }
}

event中的subtype是操做類型,咱們打開系統桌面抽屜,能夠看到以下的控制鍵:spa

subtype中的枚舉即是點擊這些控制鍵後傳遞給咱們的消息,咱們能夠根據這些消息在app內作邏輯處理。枚舉以下,其中只有100以後的在音頻控制中對咱們有效:.net

typedef NS_ENUM(NSInteger, UIEventSubtype) {
    // available in iPhone OS 3.0
    UIEventSubtypeNone                              = 0,
    // for UIEventTypeMotion, available in iPhone OS 3.0
    UIEventSubtypeMotionShake                       = 1,
    //這以後的是咱們須要關注的枚舉信息
    // for UIEventTypeRemoteControl, available in iOS 4.0
    //點擊播放按鈕或者耳機線控中間那個按鈕
    UIEventSubtypeRemoteControlPlay                 = 100,
    //點擊暫停按鈕
    UIEventSubtypeRemoteControlPause                = 101,
    //點擊中止按鈕
    UIEventSubtypeRemoteControlStop                 = 102,
    //點擊播放與暫停開關按鈕(iphone抽屜中使用這個)
    UIEventSubtypeRemoteControlTogglePlayPause      = 103,
    //點擊下一曲按鈕或者耳機中間按鈕兩下
    UIEventSubtypeRemoteControlNextTrack            = 104,
    //點擊上一曲按鈕或者耳機中間按鈕三下   
    UIEventSubtypeRemoteControlPreviousTrack        = 105,
    //快退開始 點擊耳機中間按鈕三下不放開
    UIEventSubtypeRemoteControlBeginSeekingBackward = 106,
    //快退結束 耳機快退控制鬆開後
    UIEventSubtypeRemoteControlEndSeekingBackward   = 107,
    //開始快進 耳機中間按鈕兩下不放開
    UIEventSubtypeRemoteControlBeginSeekingForward  = 108,
    //快進結束 耳機快進操做鬆開後
    UIEventSubtypeRemoteControlEndSeekingForward    = 109,
};

 

3、設置後臺信息顯示及鎖屏界面設置

設置鎖屏界面顯示信息的原理是經過設置一個系統的字典,當音頻開始播放時,系統會自動從這個字典中讀取要顯示的信息,若是須要動態顯示,咱們只須要不斷更新這個字典便可。首先須要添加<MediaPlayer/MediaPlayer.h>這個頭文件。code

代碼示例以下:blog

 NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    //設置歌曲題目
    [dict setObject:@"題目" forKey:MPMediaItemPropertyTitle];
    //設置歌手名
    [dict setObject:@"歌手" forKey:MPMediaItemPropertyArtist];
    //設置專輯名
    [dict setObject:@"專輯" forKey:MPMediaItemPropertyAlbumTitle];
    //設置顯示的圖片
    UIImage *newImage = [UIImage imageNamed:@"43.png"];
    [dict setObject:[[MPMediaItemArtwork alloc] initWithImage:newImage]
             forKey:MPMediaItemPropertyArtwork];
    //設置歌曲時長
    [dict setObject:[NSNumber numberWithDouble:300] forKey:MPMediaItemPropertyPlaybackDuration];
    //設置已經播放時長
    [dict setObject:[NSNumber numberWithDouble:150] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime]; 
    //更新字典
    [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dict];

效果以下:

專一技術,熱愛生活,交流技術,也作朋友。

——琿少 QQ羣:203317592

相關文章
相關標籤/搜索