Configuración de fuente de datos a un ID prima en MediaPlayer
-
16-09-2019 - |
Pregunta
En el método MediaPlayer.create un identificador a un archivo RAW se puede utilizar, pero cómo utilizar ese método en setDataSource?
Solución
Puede cargar el audio en bruto en un flujo de entrada y cargarlo en un MediaPlayer como lo haría un flujo normal de:
InputStream ins = getResources().openRawResource(R.raw.example);
y luego seguir un tutorial streaming como pocketjourney
Pero esto es demasiado complicado ya que sólo puede llamar
mp = MediaPlayer.create(counterstrikesb.this, R.raw.example);
Otros consejos
Consulte la fuente android.media.MediaPlayer
AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid);
if (afd == null) return;
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
Es posible que desee añadir try-catch al bloque.
parafraseando @ respuesta de Kartik aquí Obtener URI del archivo .mp3 almacenada en res / carpeta prima en Android
Si desea obtener cualquier recurso URI entonces hay dos maneras:
- Uso Nombre del recurso
Sintaxis: android.resource: // [paquete] / [Tipo res] / [res nombre]
Ejemplo: Uri.parse ( "android.resource: //com.my.package/drawable/icon");
- Uso de ID de recurso
Sintaxis: android.resource: // [paquete] / [RESOURCE_ID]
Ejemplo: Uri.parse ( "android.resource: //com.my.package/" + R.drawable.icon);
Estos eran los ejemplos para obtener el URI de cualquier archivo de imagen almacenado en la carpeta estirable. Del mismo modo se puede obtener URI de res / carpeta de crudo.
OMI la segunda manera, sería preferible que cambiar el nombre del recurso puede etc. ser fácilmente refactorizado.
Establecer la fuente de datos de este modo:
CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(), Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));