[英]Pause/Play button listener
因此,我对此事进行了大量研究,似乎无法获得这段代码来检测何时按下耳机上的“播放/暂停”按钮。 目前,我的代码正在侦听所按下的音量按钮,这些按钮向我的应用程序输出的动作非常完美。
我面临的问题是我的应用程序中没有包含mp3或多媒体,因此我几乎只需要该应用程序来检测何时按下了物理播放/暂停按钮。
我查看了http://www.sagorin.org/ios-playing-audio-in-background-audio/ ,由于在应用程序内部未检测到多媒体,因此我未能成功。 我也尝试做一个第一响应者函数,以免碰运气。
任何想法或有人遇到类似问题,将不胜感激。 谢谢
请查看文档的“ 远程控制”部分 。 需要满足三个条件才能将耳机上的按钮按下通知:
满足这些要求后,就可以开始编码了。 从文档中:
清单5-1准备接收远程控制事件
- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // Turn on remote control event delivery [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; // Set itself as the first responder [self becomeFirstResponder]; }
当视图或视图控制器不再管理音频或视频时,应关闭远程控制事件的传递。 它还应该在viewWillDisappear:方法中退出第一响应者状态,如清单5-2所示。
清单5-2结束接收远程控制事件
- (void)viewWillDisappear:(BOOL)animated { // Turn off remote control event delivery [[UIApplication sharedApplication] endReceivingRemoteControlEvents]; // Resign as first responder [self resignFirstResponder]; [super viewWillDisappear:animated]; }
处理远程控制事件
要处理远程控制事件,第一响应者必须实现UIResponder声明的remoteControlReceivedWithEvent:方法。 方法实现应评估传入的每个UIEvent对象的子类型,然后基于该子类型,将适当的消息发送给呈现音频或视频内容的对象。 清单5-3将播放,暂停和停止消息发送到音频对象。 其他远程控制UIEvent子类型也是可能的,有关详细信息,请参见UIEvent类参考。
清单5-3处理远程控制事件
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent { if (receivedEvent.type == UIEventTypeRemoteControl) { switch (receivedEvent.subtype) { case UIEventSubtypeRemoteControlTogglePlayPause: [self playOrStop: nil]; break; case UIEventSubtypeRemoteControlPreviousTrack: [self previousTrack: nil]; break; case UIEventSubtypeRemoteControlNextTrack: [self nextTrack: nil]; break; default: break; } } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.