2012-05-11 6 views
9

Si può usareQual è l'unità di measurment per la durata media in MediaMetadataRetriever

String MediaMetadataRetriver.extractMetadata(int key); 

con

key = MediaMetadataRetriver.METADATA_KEY_DURATION 

per estrarre la durata media.

Questa funzione restituisce una stringa, ma non esiste alcuna documentazione relativa al formato o all'unità di misura rappresentata da questa stringa. Suppongo che sia un numero intero in ms, ma il resto delle apis di MediaMetadataRetriever utilizza us.

Quindi qual è l'unità per la durata? Pensi che la mancanza di specifiche sia intenzionale o un bug?

+5

L'unità è millisecound –

risposta

12

Vai a questa

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

Perché extractMetadata può restituire un valore nullo è necessario avvolgere questa chiamata in un controllo:

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

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

Problemi correlati