2011-12-18 25 views
6

Hay una manera de agregar una imagen a la pantalla de bloqueo para el audio de fondo, junto con la configuración de la pista y el nombre del artista. También se mencionó en un video de la WWDC 2011, pero no hay nada específico que desaprovechar. He buscado en todos lados en los documentos y no puedo encontrarlo. Sé que es solo un iOS5, y la última versión de Spotify tiene esta característica. ¿Alguien sabe dónde pueden señalarme en la dirección correcta?Audio de fondo - Imagen en la pantalla de bloqueo

gracias, Mateo

Respuesta

10

Aquí hay una respuesta que se han encontrado:

(1) Debe controlar los eventos de control remoto. No puede ser la aplicación Now Playing a menos que lo haga. (Véase la AudioMixer (MixerHost) sample) code.)

(2) Establecer la información Reproduciendo:

MPNowPlayingInfoCenter *infoCenter = [MPNowPlayingInfoCenter defaultCenter]; 
infoCenter.nowPlayingInfo = 
    [NSDictionary dictionaryWithObjectsAndKeys:@"my title", MPMediaItemPropertyTitle, 
               @"my artist", MPMediaItemPropertyArtist, 
               nil]; 

Esto es independiente de cualquier API que está utilizando para reproducir audio o vídeo .

+0

Genial !!!!!!!!!!!! – Zhou

+0

Muchas gracias por esto. – jarryd

+0

¿Y cómo configura la imagen de la pantalla de bloqueo? – openfrog

3

según Michaels respuesta anterior, sólo tiene que anexar

@{MPMediaItemPropertyArtwork: [[MPMediaItemArtwork alloc] initWithImage:[UIImage ...]]} 

a la dict nowPlayingInfo

las opciones completas de teclas disponibles son ...

// MPMediaItemPropertyAlbumTitle 
// MPMediaItemPropertyAlbumTrackCount 
// MPMediaItemPropertyAlbumTrackNumber 
// MPMediaItemPropertyArtist 
// MPMediaItemPropertyArtwork 
// MPMediaItemPropertyComposer 
// MPMediaItemPropertyDiscCount 
// MPMediaItemPropertyDiscNumber 
// MPMediaItemPropertyGenre 
// MPMediaItemPropertyPersistentID 
// MPMediaItemPropertyPlaybackDuration 
// MPMediaItemPropertyTitle 
1

Para hacer controles funcionan ....

- (BOOL)canBecomeFirstResponder { 

return YES; 

} 

- (void)viewDidAppear:(BOOL)animated { 

[super viewDidAppear:animated]; 

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

[self becomeFirstResponder]; 

} 

- (void)viewWillDisappear:(BOOL)animated { 

[[UIApplication sharedApplication] endReceivingRemoteControlEvents]; 

[self resignFirstResponder]; 

[super viewWillDisappear:animated]; 

} 

- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent { 

if (receivedEvent.type == UIEventTypeRemoteControl) { 

switch (receivedEvent.subtype) { 

case UIEventSubtypeRemoteControlPlay: 

[player play]; 

break; 

case UIEventSubtypeRemoteControlPause: 

[player pause]; 

break; 

case UIEventSubtypeRemoteControlTogglePlayPause: 

if (player.playbackState == MPMoviePlaybackStatePlaying) { 

[player pause]; 

} 

else { 

[player play]; 

} 

break; 

default: 

break; 

} 

} 

} 

Solo funciona en un dispositivo iOS real, no en el simulador

Cuestiones relacionadas