gpt4 book ai didi

ios - 当 iPhone 连接到配件时,有没有办法访问当前播放的轨道?

转载 作者:IT王子 更新时间:2023-10-29 08:01:39 26 4
gpt4 key购买 nike

我正在尝试接收有关 iOS 应用程序中当前播放轨道的信息。这在 iPhone 连接到配件时工作得很好。如果我将它连接到我的汽车(Opel Astra,iPhone 插孔),以下代码将停止工作 as described in the documentation :

If you create an iPod music player and the user plays an item from another library using Home Sharing, the value of this property is nil.

代码:

// nil while connected to an accessory
MPMediaItem *nowPlayingMediaItem =
[[MPMusicPlayerController iPodMusicPlayer] nowPlayingItem];

// Works while not connected to an accessory
NSString *title = [nowPlayingMediaItem valueForProperty:MPMediaItemPropertyTitle];

我什至尝试过“hacky”的东西,比如访问“私有(private)”属性(original code):

MPMediaQuery *query=nil; 
MPMediaItemCollection *collection=nil;
id internalPlayer=nil;
Ivar internalPlayeriVar = object_getInstanceVariable(iPod, "_internal", NULL);
internalPlayer = object_getIvar(iPod, internalPlayeriVar);
NSLog(@"internalPlayer: %@", internalPlayer);
Ivar queryIvar = object_getInstanceVariable(internalPlayer, "_query", NULL);
query = object_getIvar(internalPlayer, queryIvar); // nil everytime
Ivar collectionIvar = object_getInstanceVariable(internalPlayer,
"_itemCollection", NULL);
collection = object_getIvar(internalPlayer, collectionIvar); // nil everytime

或者调用私有(private)方法:

// Same behaviour like [iPod nowPlayingItem], works 
// only while no accessory is connected
MPMediaItem *nowPlayingMediaItem =
[iPod nowPlayingItemAtIndex:[iPod indexOfNowPlayingItem]];

// Works while not connected to an accessory
NSString *title = [nowPlayingMediaItem valueForProperty:MPMediaItemPropertyTitle];

它也没有访问新的 MPNowPlayingInfoCenter 的解决方案,一直都是nil

[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo

我的车直接播放我的音乐而不使用 iPhone 应用并且我的 iPhone 似乎知道汽车当前正在播放什么,因为它在锁定屏幕上显示标题、艺术家和封面图标(并且仅那里)。内部播放次数也会增加。

如果我检查播放状态,如果汽车播放音乐,它也会返回 YES:

[[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying 

那么,有什么办法(可能是通过调用私有(private)方法)访问汽车当前正在播放的歌曲吗?

最佳答案

你在使用线程吗?如果是这样,则在主线程上运行代码。如果没有,则注册 item change 的 MPMusicPlayerController 通知.这样当歌曲改变时,您的应用程序就会知道新歌是什么。还要确保它在 main thread as well 上运行.

如果您的播放状态在连接时正在更新,但您的 nowPlayingItem 没有,这将确认这是一个错误。我会提交 bug report对于这个问题。

编辑:访问https://developer.apple.com/support/resources/bug-reporting.html并滚动到底部。最后一个问题说您可以联系 TSI 以解决错误。您收到 2 个免费成为开发人员的 TSI 请求,因此您可以使用其中一个来询问他们是否可以使用私有(private)库,直到错误被修复。

关于ios - 当 iPhone 连接到配件时,有没有办法访问当前播放的轨道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9157211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com