0

Suppose I have a MediaPlayer class object which is playing some music. Now I want to change the music to play either from device's internal speaker or already plugged in earphone.

Let's say just by tapping a button. Is that possible?

Nabin
  • 11,216
  • 8
  • 63
  • 98
  • 1
    Possible duplicate of [how to turn speaker on/off programatically in android 4.0](http://stackoverflow.com/questions/12036221/how-to-turn-speaker-on-off-programatically-in-android-4-0) – Michael May 17 '16 at 16:14
  • @Michael Thank you. I have been following your every answer which are similar to the scenario. I was expecting your answer. Thank you again. I can disturb you now. Sorry in advance. Let me check one of the suggestion given by Edward. :-) – Nabin May 17 '16 at 16:16

1 Answers1

3

I can't comment because I don't have enough reputation, so I'll post it.

Just do a small quick search: Switching between earpiece and speaker

import android.media.MediaPlayer;
import android.media.AudioManager;

public class MediaPlayer {
   private MediaPlayer mMediaPlayer;
   private AudioManager mAudioManager;
   private Button mButton;
   private boolean isPlayingOnSpeaker = false;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      ...

      mMediaPlayer = MediaPlayer.create(this, R.raw.song);
      mMediaPlayer.prepareAsync();
      mMediaPlayer.start();

      mButton = (Button) findViewById(R.id.button);

      mButton.setOnClickListener(new View.OnClickListener() {
      @Override
         public void onClick(View v) {
            context = getActivity().getBaseContext();

            mAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);        
            mAudioManager.setMode(AudioManager.STREAM_MUSIC);

            if(isPlayingOnSpeaker)
               {mAudioManager.setSpeakerphoneOn(false); isPlayingOnSpeaker=false;}
            else {mAudioManager.setSpeakerphoneOn(true); isPlayingOnSpeaker=true;}
         }
      }

      ...
   }
}
Nabin
  • 11,216
  • 8
  • 63
  • 98
Edward Alexander
  • 111
  • 1
  • 2
  • 12