Sadly, audio on Android is horrible, and just because it works on one device, doesn'T mean it works on others (especially Samsung).

Here's the snippet from the docs: 

There is a subtle but important difference between a newly constructed MediaPlayer object and the MediaPlayer object after reset() is called. It is a programming error to invoke methods such as getCurrentPosition(), getDuration(), getVideoHeight(), getVideoWidth(), setAudioStreamType(int), setLooping(boolean), setVolume(float, float), pause(), start(), stop(), seekTo(int), prepare() or prepareAsync() in the Idle state for both cases. 

So, we should add a check that only calls setVolume if the music is being played.