首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPNowPlayingInfoCenter信息无法通过USB附件工作

MPNowPlayingInfoCenter信息无法通过USB附件工作
EN

Stack Overflow用户
提问于 2015-03-17 20:42:17
回答 1查看 353关注 0票数 0

我有一个应用程序,使用AVPlayer (实际上是AVQueuePlayer)来播放音频。它设置MPNowPlayingInfoCenter信息,使用MPRemoteCommandCenter管理远程命令,并允许后台音频。所有这些功能通过控制中心和锁定屏幕正常工作。当我把我的手机带进我的车,它也正常工作与我的汽车的蓝牙接口。然而,如果我通过iPhone 6闪电接口将手机直接插入到我的汽车立体声音响中,它就坏了。它确实能播放音频但是..。

(1)现在播放的任何信息都不会显示在我的汽车仪表板上;(2)每当我试图做任何事情时,我的车的立体声就会弹出一堆连接错误。

我手机上的其他应用程序没有这个问题,所以我不认为这是我的立体声的错。我用的是苹果公司的官方雷电电缆,所以这也没有关系。

通过我的苹果电视,我用AirPlay试用了我的应用程序,而且它也很不稳定。我注意到AVPlayer有一个名为allowsExternalPlayback的重要属性,如果您只播放音频,则需要将其设置为NO。在将该属性设置为NO之后,通过Apple的AirPlay正常工作。我以为这也是影响我的车的问题,但情况似乎并非如此。即使在allowsExternalPlayback设置为NO的情况下,通过我的车上的USB连接播放音频仍然是错误的。

(a) AVAudioSession或(b) AVPlayer的配置方式似乎有问题。

我的音频播放器配置很简单..。

代码语言:javascript
复制
self.audioQueue = [AVQueuePlayer queuePlayerWithItems:nil];
self.audioQueue.allowsExternalPlayback = NO;

[self.audioQueue addObserver:self forKeyPath:@"status" options:0 context:kAVPlayerStatusContext];
[self.audioQueue addObserver:self forKeyPath:@"rate" options:0 context:kAVPlayerRateContext];
[self.audioQueue addObserver:self forKeyPath:@"error" options:0 context:kAVPlayerErrorContext];
[self.audioQueue addObserver:self forKeyPath:@"currentItem" options:(NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew) context:kAVPlayerCurrentItemContext];

..。就像我的音频会话..。

代码语言:javascript
复制
AVAudioSession *audioSession = [AVAudioSession sharedInstance];

NSError *error;
[audioSession setActive:YES error:&error];
// Error handling code

[audioSession setCategory:AVAudioSessionCategoryPlayback error:&error];
// Error handling code

// Audio session notifications
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self selector:@selector(audioSessionInterruptionNotification:) name:AVAudioSessionInterruptionNotification object:audioSession];
[defaultCenter addObserver:self selector:@selector(audioSessionRouteChangeNotification:) name:AVAudioSessionRouteChangeNotification object:audioSession];
[defaultCenter addObserver:self selector:@selector(audioSessionMediaServicesWereResetNotification:) name:AVAudioSessionMediaServicesWereResetNotification object:audioSession];

是否有其他需要设置的属性来处理这个用例?我能做些什么来调试这里发生的事情?这一个抓住我了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 20:54:16

这里有两个问题..。

  1. 我设置MPNowPlayingInfoPropertyPlaybackQueueIndex的方式和设置MPMediaItemPropertyAlbumTrackCount的方式一样。在查看了文档之后,我意识到MPNowPlayingInfoPropertyPlaybackQueueIndex是基于零的,我总是将队列索引设置为1,队列计数设置为1,这导致汽车立体声根本不显示任何信息。
  2. 若要使用AVPlayer进行跟踪,只需将速率设置为0以外的其他内容。我注意到,在将速率设置为播放速率之前,我对[audioQueue play]进行了不必要的调用。我删除了那个不必要的打电话,它解决了我的其他问题。出于某种原因,在我按下暂停按钮后,那次呼叫产生了汽车立体声立即发送播放命令的效果。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29109272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档