Reproducir archivo de audio desde el directorio de activos

Tengo el siguiente código:

AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3"); player = new MediaPlayer(); player.setDataSource(afd.getFileDescriptor()); player.prepare(); player.start(); 

El problema es que, cuando ejecuto este código, comienza a reproducir todos los archivos de audio en el directorio de activos, en orden alfabético en lugar de simplemente reproducir el archivo de audio que solicité. ¿Qué estoy haciendo mal? ¿Hay una mejor manera de reproducir archivos de audio desde el directorio de activos?

Pregunta de seguimiento: ¿Existe alguna diferencia entre mantener archivos de audio en el directorio de activos y mantenerlos en el directorio res / raw? Además del hecho de que no obtienen ids si están en el directorio de activos. Si muevo los archivos de audio a la carpeta res / raw entonces tengo un problema con la reutilización de MediaPlayer s porque no hay ningún parámetro id para setDataSource() . No puedo encontrar una buena guía para manejar este tipo de problema.

2 Solutions collect form web for “Reproducir archivo de audio desde el directorio de activos”

 player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); 

Su versión funcionaría si sólo tuviera un archivo en el directorio de activos. Los contenidos del directorio de activos no son realmente 'archivos reales' en el disco. Todos ellos están juntos uno tras otro. Por lo tanto, si no especifica por dónde empezar y cuántos bytes leer, el reproductor leerá hasta el final (es decir, seguirá reproduciendo todos los archivos en el directorio de activos)

Esta función funcionará correctamente 🙂

 // MediaPlayer m; /*assume, somewhere in the global scope...*/ public void playBeep() { try { if (m.isPlaying()) { m.stop(); m.release(); m = new MediaPlayer(); } AssetFileDescriptor descriptor = getAssets().openFd("beepbeep.mp3"); m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength()); descriptor.close(); m.prepare(); m.setVolume(1f, 1f); m.setLooping(true); m.start(); } catch (Exception e) { e.printStackTrace(); } } 
  • ¿Hay una manera de obtener el código fuente de un archivo APK?
  • Creación de estilos-v21.xml
  • Android: uso de recursos de otro proyecto en mi área de trabajo
  • Android estilo Recopilación de recursos (aapt) fallando: Tabla de recursos no válidos: tamaño de encabezado 0xc
  • Android define la forma XML como dibujable mediante programación
  • Compartir recursos en bruto a través de WhatsApp
  • ¿Cómo puedo detectar qué diseño está seleccionado por Android en mi aplicación?
  • ¿Hay un punto que tiene res / drawable-ldpi en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.