2013-12-12 9 views
5

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

3

.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

+0

'MediaPlayer.create()' può anche essere utilizzato per riprodurre file audio da un Uri –