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 控制使用蓝牙的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer 问题,同时直播 (iOS)

AVPlayer 音量控制

如何在 iOS 10 beta 中抑制 AVPlayer.play() 的控制台输出?

iOS音频篇:AVPlayer的缓存实现

如何在 AVplayer 中为视频文件实现音量控制?

iOS 14.2 Beta - AVPlayer 无法播放 [关闭]