2016-02-23 1 views
1

Я делаю использование приложения MediaPlayer для потоковой mp3 из драйвера Google: (Ex: https://drive.google.com/uc?export=download&id=0B50eyu1h_Rc1bENYOU1iSjFWaVk)MediaPlayer длительность возврата 0, когда поток mp3

на обновление времени Funtion:

private Runnable mUpdateTimeTask = new Runnable() { 
    public void run() { 
     long totalDuration = mp.getDuration(); 
     long currentDuration = mp.getCurrentPosition(); 
     // Displaying time completed playing 
     songCurrentDurationLabel.setText(""+utils.milliSecondsToTimer(totalDuration - currentDuration)); 
     // Updating progress bar 
     int progress = (int)(utils.getProgressPercentage(currentDuration, totalDuration)); 
     //Log.d("Progress", ""+progress); 
     songProgressBar.setProgress(progress); 
     // Running this thread after 100 milliseconds 
     mHandler.postDelayed(this, 100); 
    } 
}; 

Я вижу, что долго totalDuration = mp.getDuration() всегда return 0, несмотря на то, что медиаплеер играл.

Как я могу получить длину носителя?

+0

getCurrentPosition() возвращает правильные значения? –

+0

Да, он имеет значение – phongvan

ответ

1

Я думаю, что вам лучше смотреть это видео. У этого видео есть действительно хорошая вещь, чтобы знать о медиаплеере.

Адрес link. Пожалуйста, посетите его, и я надеюсь, что это решит ваш вопрос.

+2

Это не отвечает на вопрос. В вопросе явно указывается, что MediaPlayer.getDuration() возвращает 0. –

+0

ссылка показывает, как это сделать. Вы пробовали? –

+0

Ссылка показывает, как подготовить и запустить MediaPlayback. Я думаю, что OP это сделал. Он сталкивается с проблемой при вызове функции getDuration(), возвращающей 0, несмотря на то, что медиа играет успешно. –