2011-06-13 11 views
9

Eché un vistazo al código de muestra AddMusic de Apple, pero eso no es exactamente lo que quiero. Estoy tratando de encontrar una manera de iniciar/detener la reproducción de música en la aplicación iPod, sin controlar lo que está contenido en el entorno limitado de mi aplicación.¿Quieres controlar el iPod desde otra aplicación?

Algo como esto ...

____________ 
|   | 
| |< || >| | skip back, play/pause, skip forward 
|   | 
| XXXXXXXX | album art 
| XXXXXXXX | 
| XXXXXXXX | 
| XXXXXXXX | 
|   | 
|____________| 

Por supuesto, la aplicación es más complejo que esto, pero por ahora, me quiero centrar en asumir el control directo.
Puntos de bonificación a cualquier persona que obtenga la referencia sin cheating.


- error de carga ilustraciones trasladó a a new question.

- La implementación de texto a voz se movió a a new question.

- La barra de progreso se llena al 100% tan pronto como comienza la canción. Este código funciona:

// your must register for notifications to use them 
- (void)handleNowPlayingItemChanged:(id)notification { 
    … 
    // this is what I forgot to do 
    NSNumber *duration = [item valueForProperty:MPMediaItemPropertyPlaybackDuration]; 
    float totalTime = [duration floatValue]; 
    progressSlider.maximumValue = totalTime; 
… 
} 

// called on a one-second repeating timer 
- (void)updateSlider { 
    progressSlider.value = musicPlayer.currentPlaybackTime; 
    [progressSlider setValue:musicPlayer.currentPlaybackTime animated:YES]; 
} 
+4

+1 para el uso del arte ASCII! –

+0

Ya construí esta aplicación. Pero nunca lo terminé. Utiliza bonjour para hablar con la primera aplicación, etc. ... Grandes mentes ... –

Respuesta

4

El MediaPlayer framework es lo que busca. Hay un useful guide que también contiene un enlace a la descripción general de MediaPlayer API.

Específicamente, usted está buscando MPMusicPlayerController. Su aplicación puede controlar ya sea un reproductor multimedia de aplicación dedicado o el reproductor multimedia iPod que parece ser lo que desea.

Un ejemplo sencillo sería algo así como (cabecera omitido):

@implementation MyPlaybackController 

- (id)initWithNibName:(NSString *)nibName bundle:(id)bundleOrNil 
{ 
    if ((self = [super initWithNibName:nibName bundle:bundleOrNil])) { 
    self.musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; 
    } 
    return self; 
} 

- (IBAction)skipForward:(id)sender 
{ 
    [self.musicPlayer skipToNextItem]; 
} 

- (IBAction)skipBack:(id)sender 
{ 
    [self.musicPlayer skipToPreviousItem]; 
} 

- (IBAction)togglePlayback:(id)sender 
{ 
    if (self.musicPlayer.playbackState == MPMusicPlaybackStatePlaying) { 
    [self.musicPlayer pause]; 
    } else { 
    [self.musicPlayer play]; 
    } 
} 

@end 

toman tiempo para leer la documentación y tomar nota de las advertencias mencionadas en relación con Compartir en casa. También querrá registrarse para recibir notificaciones sobre cambios en el estado del jugador que pueden ocurrir desde fuera de su control.

Cuestiones relacionadas