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.
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");
}
}
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];
}