Diferencia entre la implementación de MediaPlayer.create y setDataSource
Estoy utilizando varios objetos de reproductor de medios de bucle de algunas pistas y quiero saber que es la diferencia entre el uso de MediaPlayer.create (resId) versus manualmente la programación de los diferentes estados, utilizando setDataSource (FileDescriptor) ect .. Todavía estoy nuevo A Android, así que no tengo idea.
.create()
es un método estático de la clase MediaPlayer
, siempre que quieras llamar a .create()
debes llamarlo por ClassName.methodName()
como MediaPlayer.create()
Mientras que setDataResource()
es un método en la clase MediaPlayer
que será llamada a través de la instancia de MediaPlayer
como
MediaPlayer mp; mp.setDataResource("your sdCard File Path...");
Ahora si usas MediaPlayer.create()
deberías tener un archivo de audio (mp3) en tu carpeta raw
bajo res
. Si no tienes carpeta raw
crear uno (normalmente tenemos que crear raw
carpeta en raw
manualmente en nuestro proyecto) y pasar el resId
de ese archivo mp3 en el método .create()
como
MediaPlayer mp = MediaPlayer.create(R.raw.mp3FileName);
El segundo es el método setDataResource()
se utiliza donde se desea reproducir archivos de audio a través de su SDCard
pero debe asegurarse de que la ruta que da a setDataSource () es exactamente correcta. La mejor manera de hacerlo, en lugar de codificar la referencia a '/ sdcard /', es usar
android.os.Environment.getExternalStorageDirectory() MediaPlayer mediaPlayer = new MediaPlayer(); File path = android.os.Environment.getExternalStorageDirectory(); mediaPlayer.setDataSource(path + "/fileName.mp3");
De esta manera usted puede conseguir la trayectoria correcta y jugar su mp3 con SDCard. Espero que esta explicación le ayudará a entender. Para más información, vea MediaPlayer desde el sitio para desarrolladores de Android