iOS AVPlayer 控制使用蓝牙
Posted
技术标签:
【中文标题】iOS AVPlayer 控制使用蓝牙【英文标题】:iOS AVPlayer control using Bluetooth 【发布时间】:2013-07-05 06:40:14 【问题描述】:我正在使用AVPlayer
开发音乐播放器应用程序。
现在我有一个需求,我想用Bluetooth
设备控制我的播放器进行播放、暂停、下一个和返回等操作。
请指导我,有什么可能的解决方案。
【问题讨论】:
【参考方案1】:要控制远程事件,播放/控制音频的 viewController 必须是第一响应者,所以在 viewDidAppear 中添加它
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
//Make sure the system follows our playback status
[[AVAudiosession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
然后您需要控制事件,因此将这段代码添加到同一个 viewController 虽然有关于 AppDelegate 的最佳位置的讨论,但这只是让您开始:
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
//if it is a remote control event handle it correctly
if (event.type == UIEventTypeRemoteControl)
if (event.subtype == UIEventSubtypeRemoteControlPlay)
[self play];
else if (event.subtype == UIEventSubtypeRemoteControlPause)
[self pause];
else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause)
[self togglePlayPause];
else if (event.subtype == UIEventSubtypeRemoteControlNextTrack)
[self next];
else if (event.subtype == UIEventSubtypeRemoteControlPreviousTrack)
[self previous];
因此,播放暂停等方法与您在 viewController 上控制音频的方法相同, 现在,这仅在控制音频的 VC 可见时才有效,通过此选项的一个选项是具有共享实例 mediaQueue / playerController 或在 AppDelegate 甚至 UIWindow 的子类中执行。 但这应该可以帮助您入门,并希望对您有所帮助.... 如果您有任何问题,请告诉我
【讨论】:
您能否详细说明一下 VC 必须可见的部分?我想当您的应用程序不在屏幕上时,VC 不能成为第一响应者,那么第一响应者应该是什么?您的 AppDelegate 是否总是能够成为响应者?所以基本上,即使你的应用程序不在屏幕上也能正常工作,AVAudioPlayer 应该由 AppDelegate 直接控制,你的viewDidAppear
方法中的代码应该移动到 applicationDidFinishLaunching
?谢谢。
是的,这是从 AppDelegate 运行它并从 applicationDidFinishLaunching、applicationDidBecomeActive 和 applicationWillTerminate 中选择并退出 firstResponder 并向 VC 调用播放/暂停方法的一种可能性
酷,为我修好了。谢谢!以上是关于iOS AVPlayer 控制使用蓝牙的主要内容,如果未能解决你的问题,请参考以下文章