我有一个循环,其中有一个过滤到mp3文件,但是当我想要获取文件的持续时间需要8-10秒时,我尝试使用Mediaplayer.create,get.Duration,MediaMetadaretrieve和Mediaplayer.setDatasource.get .Duration,但他们花了8-10秒,除了Mediaplayer.setDatasource,它会崩溃,
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他们花了很多时间,感谢您的关注
答案 0 :(得分:0)
您可以使用AudioFileIO Java类来读取和检索文件数据
For循环中的示例您可以使用此代替:
Exception in thread "main" java.lang.IllegalArgumentException: Not a file or directory: E:\Selenium-Project\cucumberDemo\--plugin
at cucumber.runtime.io.FileResourceIterator$FileIterator.<init>(FileResourceIterator.java:54)
at cucumber.runtime.io.FileResourceIterator.<init>(FileResourceIterator.java:20)
at cucumber.runtime.io.FileResourceIterable.iterator(FileResourceIterable.java:19)
at cucumber.runtime.model.CucumberFeature.load(CucumberFeature.java:38)
at cucumber.runtime.RuntimeOptions.cucumberFeatures(RuntimeOptions.java:117)
at cucumber.runtime.Runtime.run(Runtime.java:92)
at cucumber.api.cli.Main.run(Main.java:20)
at cucumber.api.cli.Main.main(Main.java:12)
答案 1 :(得分:0)
我建议您使用ExoPlayer,它也是Android,并且花费更少的时间来获取音频mp3文件的持续时间。它在实现方面更好,并且可以从url和本地文件播放文件。此外,您还可以为任何视图自定义它,并拥有各种听众。 https://developer.android.com/guide/topics/media/exoplayer.html