Pergunta

Eu tenho uma visão de mesa das músicas no dispositivo iOS e, se selecionar uma linha, pressiono para uma nova visualização em que o AvPlayer começa a tocar a música selecionada. Agora, se eu voltar e selecionar outra linha, pressionando a exibição, o aplicativo começará a tocar a nova música, enquanto continuará tocando a que já estava em execução.

EDIT: Tentei usar o valor da taxa como esse sem sucesso, pois ele sempre produzirá "não tocando" se eu o colocar no meu método ViewDidload, mesmo que uma música esteja tocando:

- (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");
    }
}
Foi útil?

Solução

Nesta linha

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

Você parece estar alocando e iniciando um novo avplayer. Como tal, não é de surpreender que você obtenha um resultado "não tocando". Basta deixar de fora essa linha.

Outras dicas

Avplayer tem um rate Propriedade que indica a velocidade da reprodução como uma bóia. 0.0f indica parado. o play e stop métodos apenas mudam o rate propriedade.

- (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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top