Pregunta

Tengo una vista de tabla de canciones en el dispositivo iOS y si selecciono una fila, presiono a una nueva vista donde AvPlayer comienza a reproducir la canción seleccionada. Ahora, si regreso y selecciono otra fila, empujando a la vista, la aplicación comenzará a tocar la nueva canción, mientras continúe reproduciendo la que ya se estaba ejecutando.

Editar: Intenté usar el valor de velocidad como este sin éxito, ya que siempre saldrá "no reproducir" si lo pongo en mi método ViewDidload, incluso si se reproduce una canción:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    appDelegate = (SimpleTableAppDelegate *)[[UIApplication sharedApplication] delegate];
    appDelegate.audioPlayer = [[AVPlayer alloc] init];
    if (appDelegate.audioPlayer.rate == 0.0f)
    {
        NSLog(@"not playing");
    } else {
    NSLog(@"already playing");
    }
}
¿Fue útil?

Solución

En esta línea

appDelegate.audioPlayer = [[AVPlayer alloc] init];

Parece que estás asignando e iniciando un nuevo AvPlayer. Como tal, no es sorprendente que obtengas un resultado de "no jugar". Simplemente deje de esa línea.

Otros consejos

AvPlayer tiene un rate Propiedad que indica la velocidad de reproducción como flotante. 0.0f indica detenido. los play y stop Los métodos simplemente cambian el rate propiedad.

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    appDelegate = (SimpleTableAppDelegate *)[[UIApplication sharedApplication] delegate];
    //Stop potential existing audioPlayer prior to creating new player
    [appDelegate.audioPlayer stop];

    //Create new audio player
    appDelegate.audioPlayer = [[AVPlayer alloc] init];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top