Вам не нужно постоянно вызывать getPosition для отслеживания времени воспроизведения, вместо этого просто запустите этот таймер и обновите свой пользовательский интерфейс в соответствии со временем таймера. Вы также можете установить OnInfoListener () в MediaPlayer для отслеживания окончания воспроизведения и таймера уничтожения.
Используйте runOnUiThread () внутри Timer для обновления пользовательского интерфейса, нет необходимости делать это с Handler.
Я кодировал такой таймер, который срабатывал каждые 200 мс, и обновлял пользовательский интерфейс счетчика без проблем.