Cambiar entre el auricular y el altavoz al presionar el botón

Estoy intentando reproducir el audio del altavoz y del auricular teniendo un botón alternar entre los dos. El problema es que estoy tratando de predeterminar el audio para reproducir desde el auricular, pero no sale nada. Entonces, cuando presiono el botón para conmutar al altavoz, aún no se reproduce el audio. Estoy jugando desde un archivo raw local.

Tengo android.permission.MODIFY_AUDIO_SETTINGS en el Manifiesto también.

Aquí está mi código:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = getActivity().getBaseContext(); am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); am.setMode(AudioManager.MODE_IN_CALL); am.setSpeakerphoneOn(false); am.setBluetoothScoOn(true); speakerON = false; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.buttonSpeaker: if(!speakerON)//speaker off { speakerON = true; am.setMode(AudioManager.MODE_NORMAL); am.setSpeakerphoneOn(true); am.setBluetoothScoOn(false); speaker.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.ic_lock_silent_mode_off, 0, 0, 0); } else { speakerON = false; am.setMode(AudioManager.MODE_IN_CALL); am.setSpeakerphoneOn(false); am.setBluetoothScoOn(true); speaker.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.ic_lock_silent_mode, 0, 0, 0); } break; } } 

Aquí es cómo estoy configurando el MediaPlayer:

 mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), R.raw.test_message); mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); mediaPlayer.start(); 

    Resulta que había puesto el modo equivocado.

    Aquí está el reproductor multimedia actualizado:

     mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), R.raw.test_message); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.start(); 

    Y luego establezco el modo para el administrador de audio:

     context = getActivity().getBaseContext(); am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); am.setMode(AudioManager.MODE_IN_CALL); am.setSpeakerphoneOn(false); 

    Y luego funcionó. Asegúrese de que el reproductor multimedia y el administrador de audio están en el mismo modo.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.