使用蓝牙的iOS AVPlayer控件
我正在用AVPlayer
开发音乐播放器应用程序。
现在我有要求,我想控制我的播放器与Bluetooth
设备的操作,如播放,暂停,下一步和回来。
请指导我,有什么可能的解决scheme。
为了控制远程事件,播放/控制audio的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上的audio的方法是一样的。现在,只有当控制audio的VC是可见的,一个选项才能通过,这是一个共享的实例mediaQueue / playerController或者在AppDelegate甚至UIWindow的子类中执行。 但是,这应该让你开始,希望它可以帮助….让我知道如果你有任何问题