Remote Control 是在 iOS 4.0 SDK 之後才出現的功能,它會出現在雙擊 Home 按鍵之後左邊的畫面中(往右滑動)。在背景音樂執行的階段,你可以透過 Remote Control 來控制音樂的播放或是聲音的大小等等,下列程式碼將示範如何將應用程式與 Remote Control 做連接與互動。
背景音樂播放
在實作 Remote Control 功能之前,你必須要有一個能具有背景播放音樂功能的應用程式,也就是當退至裝置主畫面時,應用程式裡的音樂仍然可以不間斷的持續播放,你可以參考使用 AVAudioPlayer 來播放音樂一文來製作一個簡單的背景音樂播放器。
啟用與停用 Remote Control 功能
//啟用RemoteControl功能
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
//停用RemoteControl功能
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
這簡單的一行程式碼,就決定你的應用程式是否能夠使用 Remote Control 所提供的功能,你必須在應用程式尚未進入背景執行前插入「啟用 Remote Control 功能」的程式碼,並且在應用程式從背景返回時插入「停用 Remote Control 功能」的程式碼(視個人需要而定),當啟用 Remote Control 功能之後,你的應用程式圖案就會出現在 Remote Control 上。
ps:啟用 Remote Control 功能必須要在「音樂播放」之前。
Remote Control 按鈕事件
Remote Control 雖然只有三顆按鈕,但是在操作上卻包含「單擊」、「雙擊」與「久按」,一共有 9 種不同的按鈕事件,雖然看起來相當複雜,但是我們可以透過 UIEventSubtype 來簡單的分辨它們。
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
//確定是由 RemoteControl 所傳來的事件
if ([event type] == UIEventTypeRemoteControl) {
//透過 UIEventSubtype 來分辨每個操作
switch ([event subtype]) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[self doPauseAndPlay]; //自訂播放/暫停的方法函式
break;
case UIEventSubtypeRemoteControlPreviousTrack:
[myPlayer setCurrentTime:0.0]; //跳轉至最前面
break;
default:
break;
}
}
}
ps:參考 UIEvent Class Reference 取得其他 UIEventSubtype 的相關資訊。
First Responder
最後,這也是最重要的一點,當程式退至背景執行時就已經失去了操作的 Focus,這點跟 啟用 iOS 上的虛擬鍵盤很像,所以為了能夠讓應用程式在背景也能夠維持正常操作,還需要設定 First Responder 維持操作上的 Focus,否則,Remote Control 是不會對使用的操作有任何的反應。
- (BOOL)canBecomeFirstResponder {
return YES;
}
沒有留言:
張貼留言