Когда запускается медиаплеер, музыка воспроизводится, но текущая позиция некоторое время возвращает 0 (около 200 мс).Я хочу показать текущую позицию в интерфейсе пользователя во время воспроизведения музыки.Я пытался написать хорошее состояние, но if(mediaPlayer.isPlaying())
недостаточно.
mediaPlayer.start();
future=service.scheduleAtFixedRate(new Runnable() {
public void run() {
try{
if(mediaPlayer.isPlaying())
{
startTime = System.currentTimeMillis();
curPosition = mediaPlayer.getCurrentPosition();
runOnUiThread(new Runnable() {
@Override
public void run() {
//to do part
setTimeText();
}
});
Log.d("mydebug","cur:"+curPosition);
delay = (System.currentTimeMillis() - startTime);
nextThread = millPerFrame - delay;
if (nextThread<0)
nextThread=0;
}
}
catch (Exception e)
{
Log.w("mydebug",e.getMessage());
}
}
}, 0, nextThread, TimeUnit.MILLISECONDS);
Я называю этот шаг каждые 40 мс.первый 7 поток curPosition возвращает 0. Это в 6 раз больше, чем ожидалось.Ниже вы можете увидеть мои результаты Logcat;
04-07 15:40:23.984 5349-6947/com.example.user.project mydebug: cur:0.0
04-07 15:40:24.022 5349-6947/com.example.user.project mydebug: cur:0.0
04-07 15:40:24.063 5349-6947/com.example.user.project mydebug: cur:0.0
04-07 15:40:24.104 5349-6947/com.example.user.project mydebug: cur:0.0
04-07 15:40:24.145 5349-6947/com.example.user.project mydebug: cur:0.0
04-07 15:40:24.186 5349-6947/com.example.user.project mydebug: cur:0.0
04-07 15:40:24.227 5349-6947/com.example.user.project mydebug: cur:0.0
04-07 15:40:24.272 5349-6947/com.example.user.project mydebug: cur:183.0
04-07 15:40:24.309 5349-6947/com.example.user.project mydebug: cur:183.0
04-07 15:40:24.350 5349-6947/com.example.user.project mydebug: cur:220.0
04-07 15:40:24.391 5349-6947/com.example.user.project mydebug: cur:261.0
04-07 15:40:24.432 5349-6947/com.example.user.project mydebug: cur:302.0