Определение продолжительности и формата аудиофайла
Учитывая путь (на SD-карте) к аудиофайлу, каков наилучший способ определения длины звука в миллисекундах и формат файла (или тип интернет-носителя)?
(На протяжении всего времени можно использовать MediaPlayer
getDuration
-метод, но это кажется слишком медленным/неуклюжим.)
Ответы
Ответ 1
Длина аудиофайла:
File yourFile;
MediaPlayer mp = new MediaPlayer();
FileInputStream fs;
FileDescriptor fd;
fs = new FileInputStream(yourFile);
fd = fs.getFD();
mp.setDataSource(fd);
mp.prepare();
int length = mp.getDuration();
mp.release();
Проверьте это для MimeType:
fooobar.com/questions/52417/...
Ответ 2
Я думаю, что самый простой способ:
MediaPlayer mp = MediaPlayer.create(this, Uri.parse(uriOfFile);
int duration = mp.getDuration();
mp.release();
/*convert millis to appropriate time*/
return String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(duration),
TimeUnit.MILLISECONDS.toSeconds(duration) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))
);
Ответ 3
Просто беря удар за ответом для вас, но вы, вероятно, можете определить тип носителя по расширению файла, который, по моему мнению, MediaFile может вам помочь. Что касается продолжительности, я считаю, что метод getDuration() на самом деле является родным, поэтому я не знаю, сможете ли вы сделать это намного быстрее.