Sto utilizzando diversi oggetti Media Player per il loop di alcune tracce e voglio sapere che è la differenza tra l'utilizzo di MediaPlayer.create (resId) rispetto alla programmazione manuale dei diversi stati, utilizzando setDataSource (FileDescriptor) ect .. Sono ancora nuovo ad Android quindi non ne ho idea.Differenza tra MediaPlayer.create e implementazione SetDataSource
risposta
.create()
è un metodo statico di MediaPlayer
di classe, ogni volta che si desidera chiamare .create()
bisogna chiamarla con ClassName.methodName()
come MediaPlayer.create()
mentre setDataResource()
è un metodo in MediaPlayer
classe sarà chiamata tramite l'istanza di MediaPlayer
come
MediaPlayer mp;
mp.setDataResource("your sdCard File Path...");
Ora, se si utilizza MediaPlayer.create()
si dovrebbe avere il file audio (mp3) nella cartella raw
sotto res
. Se non si dispone di raw
cartella creare uno (normalmente dobbiamo creare raw
cartella manualmente nel nostro progetto) e passare il resId
di quel file mp3 in .create()
metodo come
MediaPlayer mp = MediaPlayer.create(R.raw.mp3FileName);
seconda è il metodo setDataResource()
utilizzato dove si desidera riprodurre file audio tramite il proprio SDCard
ma è necessario assicurarsi che il percorso che si fornisce a setDataSource() sia esattamente corretto. Il modo migliore per farlo, invece di hardcoding il riferimento alla '/ sdcard /', è quello di utilizzare
android.os.Environment.getExternalStorageDirectory()
MediaPlayer mediaPlayer = new MediaPlayer();
File path = android.os.Environment.getExternalStorageDirectory();
mediaPlayer.setDataSource(path + "/fileName.mp3");
In questo modo è possibile ottenere percorso corretto e giocare il vostro mp3 attraverso SDCard. Spero che questa spiegazione ti aiuti a capire. Per ulteriori informazioni, vedere MediaPlayer From Android Developer Site
'MediaPlayer.create()' può anche essere utilizzato per riprodurre file audio da un Uri –