2012-05-11 1 views
9

можно использоватьЧто такое единица Measurment для продолжительности медиа в MediaMetadataRetriever

String MediaMetadataRetriver.extractMetadata(int key); 

с

key = MediaMetadataRetriver.METADATA_KEY_DURATION 

извлечь продолжительность медиа.

Эта функция возвращает строку, но нет документации относительно формата или единицы измерения, которые представляет эта строка. Я бы предположил, что это целое число в ms, но в остальной части apis MediaMetadataRetriever используется us.

Итак, какова единица измерения продолжительности? Считаете ли вы, что отсутствие спецификации преднамеренно или ошибка?

+5

Устройство millisecound –

ответ

12

Смотреть это

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); 
         } 
        } 
1

Поскольку extractMetadata может возвращать нуль, что вам нужно обернуть этот вызов в проверке:

int duration = 0; 
String dur = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
if (dur != null) { 
    duration = Integer.parseInt(dur); 
} 
mDuration = duration; 
long h = duration/3600; 
long m = (duration - h * 3600)/60; 
long s = duration - (h * 3600 + m * 60); 

(от http://www.codota.com/android/scenarios/52fcbd47da0af79604fb4a67/android.media.MediaMetadataRetriever?tag=dragonfly)