我想实现以下内容,
> App正在后台运行音乐或视频(使用MPMoviePlayerController).
>用户双击主页按钮并转到显示播放控件的第一个屏幕(快退,播放或暂停,快进按钮)
>用户单击快退或快进按钮.
然后应用播放上一个或下一个音乐或视频.
对于第3步,我应该知道单击了哪个按钮.
(我自然知道,当前播放的项目已暂停,停止使用MPMoviePlayerPlaybackStateDidChangeNotification通知).
我应该注册哪个通知?还是有其他方法吗?
解决方法
我自己得到了答案.
那是使用UIApplication的beginReceivingRemoteControlEvents.
在适当的地方(如viewWillAppear :)放入以下代码
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; [self becomeFirstResponder];
并且视图控制器应该实现以下方法返回YES
- (BOOL)canBecomeFirstResponder {
return YES;
}
然后您可以通过以下方法接收远程控制器事件.
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
if( event.type == UIEventTypeRemoteControl ) {
NSLog(@"sub type: %d",event.subtype);
}
}
event.subtype如下,
typedef enum {
// available in iPhone OS 3.0
UIEventSubtypeNone = 0,// for UIEventTypeMotion,available in iPhone OS 3.0
UIEventSubtypeMotionShake = 1,// for UIEventTypeRemoteControl,available in iPhone OS 4.0
UIEventSubtypeRemoteControlPlay = 100,UIEventSubtypeRemoteControlPause = 101,UIEventSubtypeRemoteControlStop = 102,UIEventSubtypeRemoteControlTogglePlayPause = 103,UIEventSubtypeRemoteControlNextTrack = 104,UIEventSubtypeRemoteControlPrevIoUsTrack = 105,UIEventSubtypeRemoteControlBeginSeekingBackward = 106,UIEventSubtypeRemoteControlEndSeekingBackward = 107,UIEventSubtypeRemoteControlBeginSeekingForward = 108,UIEventSubtypeRemoteControlEndSeekingForward = 109,} UIEventSubtype;