One can use
String MediaMetadataRetriver.extractMetadata(int key);
with
key = MediaMetadataRetriver.METADATA_KEY_DURATION
to extract the media duration.
This function returns a String, but there is no documentation regarding the format or unit of measurement this string represents. I would assume it is an integer in ms, but the rest of MediaMetadataRetriever's apis uses us.
So what is the unit for duration? Do you think the lack of specification is intentional or a bug?
See this
long durationMs = Long.parseLong(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
long duration = durationMs / 1000;
long h = duration / 3600;
long m = (duration - h * 3600) / 60;
long s = duration - (h * 3600 + m * 60);
String durationValue;
if (h == 0) {
durationValue = String.format(
activity.getString(R.string.details_ms), m, s);
} else {
durationValue = String.format(
activity.getString(R.string.details_hms), h, m, s);
}
}