Есть ли способ получить доступ к текущей воспроизводимой дорожке, когда iPhone подключен к аксессуару?

Я пытаюсь получить информацию о воспроизводимой в данный момент дорожке в приложении iOS. Это работает нормально, пока iPhone не подключен к аксессуар. Если я подключу его к своей машине (Opel Astra, разъем для iPhone), следующий код перестанет работать , как описано в документации :

Если вы создаете музыкальный проигрыватель iPod, и пользователь играет элемент из другой библиотеки, использующей общий доступ к дому, значение этого свойства равно nil .

Код:

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

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

Я даже пробовал «хакерские» вещи, такие как доступ к «частным» свойствам ( исходный 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

или для вызова частных методов:

// 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 знает, что сейчас играет машина, потому что на нем отображается название, исполнитель и обложка значок на экране блокировки (и только там). Также увеличивается внутренний счетчик игр.

Если я проверю состояние воспроизведения, оно также вернет ДА , если в машине воспроизводится музыка:

[[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying 

Итак, есть ли способ (может быть, путем вызова частных методов) для доступа к песне, автомобиль в данный момент воспроизводится?

22
задан Thomas Kekeisen 23 February 2012 в 08:15
поделиться