Sto tentando di ricevere informazioni sulla traccia attualmente riprodotta in un'app per iOS. Funziona piuttosto bene mentre l'iPhone è non collegato a un accessorio. Se lo collego alla mia auto (Opel Astra, presa iPhone), il seguente codice si ferma a lavorare as described in the documentation:C'è un modo per accedere alla traccia attualmente riprodotta mentre l'iPhone è collegato a un accessorio?
Se si crea un lettore musicale iPod e l'utente gioca un elemento da un'altra libreria utilizzando Condivisione in famiglia, il il valore di questa proprietà è
nil
.
Codice:
// nil while connected to an accessory
MPMediaItem *nowPlayingMediaItem =
[[MPMusicPlayerController iPodMusicPlayer] nowPlayingItem];
// Works while not connected to an accessory
NSString *title = [nowPlayingMediaItem valueForProperty:MPMediaItemPropertyTitle];
Ho anche provato roba "hacky", come per accedere alle proprietà "privati" (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
o per chiamare i metodi privati:
// 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];
E 'anche no soluzione per accedere al nuovo MPNowPlayingInfoCenter
, il suo nil
tutto il tempo.
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo
mia macchina riproduce la mia musica direttamente senza utilizzare un applicazione per iPhone e sembra che il mio iPhone sa quello che la macchina è attualmente in riproduzione perché mostra l'icona del titolo, l'artista e la copertura sulla schermata di blocco (e solo lì). Anche il numero di giochi interno aumenta.
Se controllo lo stato di riproduzione, restituisce anche YES
se l'auto suona musica:
[[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying
Quindi, c'è qualche modo (può essere attraverso chiamando i metodi privati) per accedere al brano, l'auto è attualmente giocando?
OT: ho dovuto sorridere quando ho letto che vedi la tua auto come accessorio per il tuo telefono e non il contrario :-) – Matthias
Puoi spiegare se stai collegando tramite il jack per cuffie o il jack per iPhone? Suppongo anche che la tua macchina stia riproducendo musica dal tuo iPhone? Se l'iPhone sta visualizzando la canzone, suppongo che l'iPhone sia effettivamente quello che suona la musica anziché l'auto. Vuoi riprodurre la musica attraverso la tua app mentre è connessa alla macchina in modo che venga fuori dagli altoparlanti dell'auto? – Bot
Collego l'iPhone tramite il jack iPhone. Non so chi interpreti effettivamente la musica, ma sono in grado di selezionare la musica dal display informativo nella mia auto. Voglio solo sapere in un'app di terze parti quale canzone è attualmente riprodotta. (Per riprodurre musica con un'app di terze parti è anche possibile, ma i controlli dell'auto car funzionano solo con la vera app "music") –