iOS音樂背景播放功能

  • 1
這陣子在處理iOS背景音樂播放的功能,筆記一下


1.在UIViewController裡加上: 
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
[session setActive:YES error:nil]; 


2.在 info.plist 中加上「required background modes」Key ,  Value 選 App plays audio

3.若想要在螢幕鎖定或是多工列(按兩下Home)控制聲音播放的話,加上
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
[self becomeFirstResponder]; 
關閉加上
[[UIApplication sharedApplication] endReceivingRemoteControlEvents]; 
[self resignFirstResponder];
 設定canBecaomFirstResponder為Yes

- (BOOL)canBecomeFirstResponder {
    NSLog(@"canBecomeFirstResponder");    return YES;}


4. 加控制的事件偵測
-(void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent{
    if (receivedEvent.type == UIEventTypeRemoteControl) {
        switch (receivedEvent.subtype) {
            case UIEventSubtypeRemoteControlTogglePlayPause:                //開始or暫停
                break;
            case UIEventSubtypeRemoteControlPreviousTrack:                //上一首
                break;
            case UIEventSubtypeRemoteControlNextTrack:                //下一頁
                break;
            case UIEventSubtypeRemoteControlBeginSeekingBackward:                //長按後退鍵
                break;
            case UIEventSubtypeRemoteControlEndSeekingBackward:                //長按後退鍵結束
                break;
              //還有其他事件等你自已發掘
            default:
                break;
        }
    }
}

5.可以加上以下這段,改變播放器的曲目資訊與專輯圖片
使用前請先 import MediaPlayer/MediaPlayer.h

- (void)configNowPlayingInfoCenter {
     
    Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter");
    if (playingInfoCenter) {
      
        MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];      
        // 當前播放歌曲的圖片        MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"Album.png"]];      
        NSDictionary*songInfo = [NSDictionary dictionaryWithObjectsAndKeys:@"專輯名稱", MPMediaItemPropertyArtist,                                 @"專輯標題", MPMediaItemPropertyTitle,
                                 artwork, MPMediaItemPropertyArtwork,
                                 @"專輯介紹", MPMediaItemPropertyAlbumTitle,
                                 nil];
        center.nowPlayingInfo = songInfo;
      
    }
}


6.如果在Cocos2d裡想實現以上的功能,若有用到SimpleAudioEngine,請把以下程式碼插在步驟1.的程式碼之前,目的是讓SimpleAudioEngine暫停,不讓音效的資源佔住。
[SimpleAudioEngine end];

以上,就可以很輕鬆的把這個功能加到應用程式裡面了。




新年快樂2013

  • 0


我又孝年一次了,今年跨年已經不是去人擠人、倒數321這麼麻煩了,而是在家看完電視後,衝去墾丁看日出,超瘋的啦!大家一定會以為我有看到日出,然後一路很順的玩回來!錯了,事情永遠不是想像的那麼簡單,當天實際的情形事…(遠望)
我們5個人一台車,瘋瘋顛顛的從台南往墾丁出發,途中一切都很順利,到了墾丁後,發現也滿多人跟我們一樣瘋瘋顛顛的準備去看日出。好吧,人多就要排隊上接駁車,當然,我們也很順利的坐上接駁車上山前往龍磐公園,從鵝鑾鼻公園出發大約5分鐘的車程,很快就到了,到了公園後,也很順利的搶到了心目中的好位置、架好架腳,坐在地上等待2013年的第一道曙光,雖然當時的風超大,溫度有點低,但依然不減我們的興致。
時間接近太陽升起的時間,約莫6:10,天空漸漸的亮起,我也把相機準備好迎接聖光。眼看時間快到了,就在此時,所有的群眾突然開始往另一個方向移動,咦?不是會在我們正前方升起嗎?怎麼太陽會臨時決定從另一個地方升起,情報錯誤,剛剛的位置都白佔了,只好趕緊剛著跑到太陽的方向,繼續等待聖光的到來。
已經6:30分了,就在主持人倒數完5 4 3 2 1…的同時,我的心情也跟著down到了谷底,馬的B,雲層厚的跟棉花糖一樣,看得到太陽才有鬼咧,這時我的心情又浮現了另一個念頭,為何我現在在這裡吹風當傻子,決定在家睡覺不是更好嗎。俗話說的好,既有的事實改變不了,就改變自已的心境去接受它吧(其實心裡還是很嘟爛…),就走出去坐接駁車下山吧!
好了,故事講到這邊,從看不到日出開始,一連串的惡夢要來了。
人人人、人人人,那來這麼多人啊!要走10分鐘才走到開始排隊的地方,一行人決定,走下山…拖著疲備的身軀和扁扁的巴豆,走了1個小時,終於走到山下停車的地方。耶…終於可以坐車開始接下來的行程了,雖然沒看到日出,但至少來了墾丁,就暫時把聖光沒出現的事實擺一邊吧,開始今天的旅程囉!
碰…關好車門…發發發發發、發發發發發、發發發發發不動…怎麼發就是發不動,挫賽,車壞了發不起來,拎老師卡好咧,這三小朋友,日出沒看到就算了,車子也發不動,這三小朋友啦!無奈,只好找師傅來修了,幸好當時是已經是八點多了,找到當地的保養廠看了之後,說要拖回保養廠才能修,拖就拖吧,該修的也是要修,不然也回不了台南,就這樣,車修好後,時間也到了下午的1點。耶…沒錯,是1點,有夠餓的啦,過程中,我們只吃了一個簡單的漢堡跟紅茶,也斷斷續續的在等待的時間中補眠。
當時,在既定的行程中安排了去東港吃海產,所以當車一修好就立馬衝去東港,來吃個海鮮大餐,給它好好補充一下體力,至少讓這次的行程有夠漂亮的Ending。但真的事與願違,到了海產店後,被告知說,店家下午休息!.........拎老師咧…翻桌,又泡湯了。

最後,一群人帶著睡不飽、吃不到、沒看到的心情回到了台南。

下個結論,2013年的1月1日不適合出遊,適合在家睡著,但我卻跑了出去,享受了這一切的帶賽之旅。