In AndroidAudio#newMusic setDataSource is called immediately after a new MediaPlayer is created,  which means it is effectively never in the Idle state referred to in your snippet. The naming of the states is a little confusing but if you look at the state diagram in the docs it should be clearer.