我有一個循環,其中有一個MP3文件的過濾器,但是當我想要獲得文件的持續時間花費8 - 10秒,我嘗試了Mediaplayer.create,get.Duration,MediaMetadaretrieve和Mediaplayer.setDatasource.get.Duration,但他們花了8 - 10秒除了Mediaplayer.setDatasource,這將是崩潰了,獲取持續時間音頻需要8-10秒,獲取它的最佳方式是什麼?
File scan;
File[]list;
String song_path;
int posicion;
int minutes;
int seconds;
ArrayList<String>Song_list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text=(TextView)findViewById(R.id.text);
metada=new MediaMetadataRetriever();
scan= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
list=scan.listFiles();
for(File files:list){
if(files.getName().endsWith("mp3")){
song_path=String.valueOf(files.getAbsolutePath());
Song_list.add(song_path);
metada.setDataSource(MainActivity.this,Uri.parse(song_path));
String dutation=metada.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
posicion=Integer.parseInt(dutation)/1000;
minutes=posicion/60;
seconds=posicion%60;
text.setText(minutes+":"+seconds+text.getText());
/*player=MediaPlayer.create(MainActivity.this,Uri.parse(song_path));
posicion=player.getDuration()/1000;
minutes=posicion/60;
seconds=posicion/60;
text.setText(minutes+":"+seconds+text.getText());*/
}
}
}
}
我知道代碼Media.create和metada.extracMetada他們是誰花了大量的時間,謝謝您注意
查詢'MediaStore'而不是自己做所有這些。 – CommonsWare
可以給我一個例子 –
http://stackoverflow.com/q/26619688/115145 http://www.jayrambhia.com/blog/android-audio-cursor – CommonsWare