Есть несколько способов сделать это. Самый простой – использовать класс
MediaPlayer.
Это стейт-машина для воспроизведения медиафайлов. Она не предоставляет готовый графический интерфейс, но позволяет вручную вызывать методы
seekTo(),
play(),
stop(), и т. д. Полная диаграмма состояний описана на изображении ниже.
MediaPlayer не потокобезопасен – все операции должны производиться в том же потоке, в котором он был создан.
Альтернативный API предлагает библиотека с открытым исходным кодом
ExoPlayer.