2017-03-07 6 views
1

Je crée ma propre implémentation de Media Player en utilisant MediaCode, MediaExtractor et AudioTrack. J'ai besoin d'effectuer des distorsions sur les échantillons mp3 décodés que j'ai lus à partir de fichiers audio stockés localement, d'où l'implémentation personnalisée. Pour cette raison, j'ai besoin de mettre en œuvre mes propres fonctions seekTo et getCurrentPosition. Cependant, je ne suis pas sûr de la façon dont j'allais mettre en œuvre ce dernier.Android: Obtenir la position actuelle avec MediaExtractor & MediaCodec

Je pourrais configurer un auditeur pour incrémenter la position tout en jouant mais cela semble être une idée terrible et probablement pas précise. Quelle est la meilleure façon de le faire? Je cherche à soutenir le niveau d'API 16 ou plus.

Répondre

2

La réponse provient de l'utilisation de MediaExtractor. Une fois que l'extracteur a lu des données d'échantillon via la méthode extractor.readSampleData(...), un échantillon a été chargé. Un appel ultérieur à extractor.getSampleTime() fournit l'heure actuelle en microsecondes. La division de cette valeur par 1 000 donne la valeur de la milliseconde. Je stocke cette variable comme sa lecture et c'est la source pour les appels suivants à la méthode getCurrentPosition() de mon joueur personnalisé.

+0

Utilisez-vous 'extractor.getSampleTime()' dans votre méthode 'getCurrentPosition()'? – Kristopher