5

Estoy diseñando una aplicación de música que reproduce música de la biblioteca de música del iPhone del usuario y tengo problemas para averiguar qué reproductor de audio es el adecuado para usar (AVAudioPlayer, AVPlayer o MPMusicPlayer).iPhone - ¿Cuál es el reproductor de audio adecuado para mi aplicación?

Mi aplicación tiene que hacer lo siguiente:

  • Reproducción de música desde la biblioteca de música iPhone
  • Control de volumen de la música aplicación por separado de volumen del dispositivo/sistema
  • Continuar para reproducir música aplicación cuando la aplicación se mueve a
  • fondo
  • eventos de captura cuando la canción cambia a la siguiente canción o acabados

De mi investigación parece que cada uno de los tres reproductores de audio mencionados anteriormente realiza ALGUNAS de las tareas requeridas para mi aplicación, pero ninguna de ellas hace TODAS ellas. AVPlayer parece ser el más cercano, excepto que su volumen depende del dispositivo/volumen del sistema.

¿Alguien tiene alguna recomendación o solución para lograr esto? He estado pensando en esto durante bastante tiempo, por lo que cualquier ayuda sería apreciada.

Respuesta

1

EDITAR

La clase MPMusicPlayerController no soporta realmente la reproducción de audio de fondo cuando conseguir una instancia del mismo a través de + applicationMusicPlayer. La mejor opción, entonces, es simplemente usar MPMusicPlayer para consultar la biblioteca de música del iPod. Una vez que el usuario ha seleccionado una canción, se puede consultar el MPMediaItem resultante para obtener su URL de activo y alimentarlo al +playerWithURL de AVPlayer, lo que le proporciona un control total de los parámetros de reproducción.

-

recomendaría MPMusicPlayerController.

  1. MPMusicPlayerController maneja los detalles de bajo nivel de la reproducción de archivos de audio en la biblioteca de iTunes.
  2. Puede usar el método de clase -applicationMusicPlayer para obtener una copia local del iPod singleton; desde allí, puede controlar su volumen estableciendo su propiedad volume solo para su aplicación.
  3. asumiría MPMusicPlayerController tiene soporte audio de fondo ya construido. Si no lo hace, puede cambiar el contexto de sesión de audio de su aplicación para que funcione (ver Playing background audio en http://www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/)
  4. Puede configurar cualquier objeto que elegir ser un observador de KVO del objeto MPMusicPlayerController específico de su aplicación. De esta manera, se le puede notificar cuando se cambie la propiedad nowPlayingItem.

Esperemos que esta descripción de alto nivel sea suficiente. Avísame si necesitas más aclaraciones.

+0

y tal vez revise el código de muestra AddMusic de apple – amergin

+0

Que todo suena bien pero el método appmusicplayer de MPMusicPlayer no admite audio una vez que la aplicación pasa al segundo plano, y en el enlace que aparece como ejemplo está usando AVPlayer, así que estoy no estoy seguro de que la sesión de audio de fondo funcionaría con appmusicplayer. Sugerencias? – Matt

+0

Hola Matt. Mis disculpas por extrañar los documentos sobre eso.Entonces, lo mejor que puede hacer es usar MPMusicPlayer para acceder y consultar la biblioteca del iPod. Una vez que el usuario ha seleccionado una canción, puede obtener la URL de la canción a través de la propiedad 'MPMediaItemPropertyAssetURL' (de la clase' MPMediaItem') y alimentar esa URL al método '+ playerWithURL' de AVPlayer. A partir de ahí, simplemente utiliza AVPlayer para reproducir la canción. Eso debería darle un control detallado de la reproducción mientras todavía tiene acceso a la biblioteca del iPod. –

Cuestiones relacionadas