繁体   English   中英

暂停/播放按钮监听器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM