Reproductor de medios de Android: descargue a archivo y secuencia de archivo

Estoy usando MediaPlayer de Android para reproducir archivos MP3 que se descargan simultáneamente desde Internet usando el DownloadManager . Estoy al tanto de la capacidad de MediaPlayer para transmitir directamente, pero no quiero usar eso:

La ventaja obvia que se obtiene al descargar y simultáneamente la transmisión desde el archivo es que de esta manera, el archivo se almacena y está disponible localmente después.

  • Esto funciona en principio – el MediaPlayer comienza a reproducir el archivo, incluso si no se descarga por completo. (BTW mi problema no es que no puedo conseguir MediaPlayer para jugar.)
  • El problema es que cuando el MediaPlayer llega a la posición donde el estado de descarga era justo cuando comenzó a jugar, se detiene y llama a onCompletion . (Aclaración: Supongamos que el archivo se descarga al 12% cuando empiezo a jugar.) Cuando el jugador llega a la posición al 12%, se detiene.)
  • Nota lateral rápida: OnBufferingUpdateListener.onBufferingUpdate(...) no se llama cuando se agrega algo al archivo MP3 a través del DownloadManager .

Así que la pregunta es: ¿Cómo puedo descargar simultáneamente un archivo de audio al sistema de archivos y reproducirlo? (Android 4 + es suficiente, si eso hace una diferencia.)

Supongo que está apuntando MediaPlayer al archivo. En ese caso, no creo que admita la transmisión, y probablemente comprueba el tamaño del archivo y de antemano, por lo que no se actualizará como más del archivo entra en.

Tienes que apuntarlo a un contenido que funcione con streaming, por ejemplo HTTP. Acabo de ver cómo funciona "ES File Explorer" (con LogCat) – al hacer clic en un archivo de vídeo en un archivo compartido, abre un servidor HTTP local y envía al MediaPlayer un Uri HTTP a su servidor local , Que también incluye la ruta remota.

Cuando recibe la solicitud a través de HTTP, el servidor local empieza a leer el archivo desde la ubicación remota y lo proporciona localmente a MediaPlayer a través de HTTP. Usted probablemente puede hacer lo mismo, y además de proporcionarlo a través de HTTP también guardarlo en el disco.

Me ayudó, espero ayudar a alguien más.

Reproductor de descargar y reproducir música.

 mMediaPlayer.setDataSource(DOWNLOAD_URL); File root = Environment.getExternalStorageDirectory(); File dir = new File(root + "/Folder"); if (!dir.exists()) { dir.mkdirs(); DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); Uri downloadUri = Uri.parse(DOWNLOAD_URL); DownloadManager.Request request = new DownloadManager.Request(downloadUri); request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI); request.setAllowedOverRoaming(false); request.setTitle(TITLE); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, TITLE); request.allowScanningByMediaScanner(); 

Después de descargar el archivo:

 mMediaPlayer.setDataSource(Environment.getExternalStorageDirectory() + "/Folder/" + TITLE + ".mp3"); 
  • Reproducir archivos mp3 durante la descarga?
  • Problema de transmisión en vivo de Android RTSP
  • Transmisión de protocolo MMS con VITAMIO SDK en Android
  • Transmisión en directo desde la aplicación de Android a Youtube
  • Java.net.SocketException: sendto failed: EPIPE (Broken pipe) sobre una conexión de datos a localhost
  • La transmisión de datos en tiempo real Bluetooth SPP en Android sólo funciona durante 5 segundos
  • Cómo hacer que una videoview NO se inicie automáticamente después de preparado
  • Streaming de vídeos de Youtube
  • Cualquier forma de acelerar este código. Streaming de audio en Android
  • Prácticas recomendadas para la transmisión de audio
  • Android: transmisión de la cámara como mjpeg
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.