Я решил эту проблему, временно открыв тот же файл в новом медиаплеере, получил продолжительность и снова выпустил ее.В целях экономии системных ресурсов это следует делать только периодически, скажем, каждые 5 секунд и только в том случае, если файл действительно изменился.
public boolean fileSizeHasChanged() {
long currentFileSize = new File(mCurrentMediaFile).length();
if (currentFileSize == mLastFileSize)
return false;
mLastFileSize = currentFileSize;
return true;
}
public int getDuration() {
long currentDurationCheck = System.currentTimeMillis();
if (currentDurationCheck - mLastDurationCheck < 5000)
return mDuration;
mLastDurationCheck = currentDurationCheck;
if (!fileSizeHasChanged())
return mDuration;
// mp is the main media player actual playing, mp2 is the auxillary one
MediaPlayer mp2 = new MediaPlayer();
try {
mp2.setDataSource(mCurrentMediaFile);
mp2.prepare();
mDuration = mp2.getDuration();
mp2.release();
} catch (Exception e) {
e.printStackTrace();
}
return mDuration;
}