La commutation entre l'écouteur et le haut-parleur en appuyant sur une touche

Je suis en train de lire des fichiers audio à partir à la fois le haut-parleur et l'écouteur en avoir un bouton bascule entre les deux. Le problème est que je suis en train de défaut de l'audio pour jouer de l'écouteur, mais rien ne sort. Puis, quand j'appuie sur le bouton pour basculer en mode haut-parleur, toujours pas de lecture audio. Je suis à jouer à partir d'un local de fichier raw.

J'ai android.la permission.MODIFY_AUDIO_SETTINGS dans le Manifeste.

Voici mon code:

@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;

    }
}

Ici est de savoir comment je suis en train d'ouvrir le lecteur multimédia:

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

OriginalL'auteur BC2 | 2012-07-26