2017-04-08 12 views
0

私はmp3ファイルへのフィルタがあるループを持っていますが、ファイルの所要時間を8〜10秒かかってもらいたいときは、Mediaplayer.create、get.Duration、MediaMetadaretrieve、Mediaplayer.setDatasource.get.Durationを試しましたが、 、私はコードMedia.createとmetada.extracMetadaは多くの時間を取った彼らであることを知って、オーディオの所要時間を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());*/ 
     } 
    } 

} 

}

を、それをクラッシュされますMediaplayer.setDatasource除く10秒ありがとう - 彼らは8を取りましたあなたの注意のために

+0

このすべてを自分で行うのではなく、 'MediaStore'を照会してください。 – CommonsWare

+0

私に例を与えることができます –

+0

http://stackoverflow.com/q/26619688/115145 http://www.jayrambhia.com/blog/android-audio-cursor – CommonsWare

答えて

0

AudioFileIO Javaクラスを使用して、ファイルデータを読み込んで取得することができますループのためにあなたが代わりにこれを使用することができ、あなたの中

例:

AudioFile myMp3 = AudioFileIO.read(files); 
    duration = myMp3.getAudioHeader().getTrackLength(); 
+0

android studioでAudioFileIOをインポートするには –

+0

最初にJAudioTaggerライブラリをダウンロードしてくださいライブラリをプロジェクトに追加してインポートしてください。 –

0

は、私はあなたがアンドロイドでもあるし、オーディオmp3ファイルの継続時間を得ることにはるかに少ない時間を要するExoPlayerを使用することをお勧めします。実装上の方が優れており、URLやローカルファイルからファイルを再生します。さらに、どのビューでもカスタマイズすることができ、あらゆる種類のリスナーがあります。 https://developer.android.com/guide/topics/media/exoplayer.html

+0

私はそれを調べます –

関連する問題