Есть несколько способов сделать это. Самый простой – использовать класс MediaPlayer.

Это стейт-машина для воспроизведения медиафайлов. Она не предоставляет готовый графический интерфейс, но позволяет вручную вызывать методы seekTo(), play(), stop(), и т. д. Полная диаграмма состояний описана на изображении ниже.

MediaPlayer не потокобезопасен – все операции должны производиться в том же потоке, в котором он был создан.

Альтернативный API предлагает библиотека с открытым исходным кодом ExoPlayer.