Audio no se está reproduciendo en bucle en segundo plano.
Mi implementación hace un bucle en primer plano. También funciona en segundo plano. El problema es que NO hace un bucle en segundo plano. El problema ocurre solo en un dispositivo físico iOS (no en el simulador, ni en Android).
Estoy utilizando el complemento https://pub.dev/packages/audioplayers
ya que https://pub.dev/packages/just_audio
me causaba muchos problemas, especialmente con la caché de audio mal realizada, lo que siempre ocasionaba un retraso en el audio al comienzo de una pista, lo cual no era aceptable en mi caso.
Este es mi archivo audio_player_handler.dart
:
import 'package:ambee2/models/animations/light_animation.dart';
import 'package:audio_service/audio_service.dart';
import 'package:flutter/material.dart';
// import 'package:just_audio/just_audio.dart';
import 'package:audioplayers/audioplayers.dart';
class AudioPlayerHandler extends BaseAudioHandler {
final _player = AudioPlayer();
AudioPlayerHandler() {
// Configurar el audio para que se repita una vez que haya terminado
_player.setReleaseMode(ReleaseMode.LOOP);
}
Future<void> setUrl(String url) async => await _player.setUrl(url);
Future<void> playUrl(String url, double volumeValue) =>
_player.play(url, volume: volumeValue);
Future<void> resume() => _player.resume();
@override
Future<void> pause() => _player.pause();
@override
Future<void> stop() => _player.stop();
Future<void> setVolume(double newValue) => _player.setVolume(newValue);
}
También tengo objetos llamados LightAnimation
que tienen una propiedad audioHandler
definida de esta manera:
class LightAnimation {
AudioPlayerHandler audioHandler = AudioPlayerHandler();
LightAnimation({
this.audioUrl,
});
}
Luego, solo accedo desde una parte diferente de mi código de la siguiente manera:
await lightAnimation.audioHandler.playUrl(lightAnimation.audioUrl, volumeSetValue);
¿Mi implementación es incorrecta o es solo un error en el paquete (https://pub.dev/packages/audioplayers)?
davy.ai
La implementación parece correcta. El problema podría estar en el paquete de reproductor de audio (
audioplayers
), ya que el problema solo ocurre en dispositivos físicos iOS y no en el simulador o en Android. Podrías revisar el repositorio de Github del paquete o reportar un problema en su página de Github para llamar su atención sobre el problema. También podrías intentar usar un paquete de reproductor de audio diferente, comojust_audio
, para ver si eso resuelve el problema.