во время игры можно изменить вывод звука?

Недавно я начал с Android.

Я пытаюсь сделать небольшой пример, чтобы понять, как звук выводится с Android.

Для этого я создаю программу, которая воспроизводит mp3-файл, и во время этого воспроизведения я могу изменить вывод звука на:

  • Внутренний динамик
  • Внешний динамик
  • Гарнитура
  • Наушник

Это возможно?

У меня есть часть кода, но я не знаю, как перейти от звукового выхода к другому.

открытый класс TestAudioActivity расширяет активность {

private MediaPlayer mediaPlayer;
private ImageButton playButton;
private ImageButton pauseButton;
private ImageButton stopButton;
AudioManager audioManager;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    initializeMediaPlayer();

    playButton = (ImageButton) findViewById(R.id.playButton);
    pauseButton = (ImageButton) findViewById(R.id.pauseButton);
    stopButton = (ImageButton) findViewById(R.id.stopButton);

    playButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            if (mediaPlayer != null) 
                mediaPlayer.start();
            else
                initializeMediaPlayer();
        }
    });

    pauseButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            /** if (mediaPlayer != null) 
                 mediaPlayer.pause(); */
            audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            audioManager.setSpeakerphoneOn(false);
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);

        }
    });

    stopButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            if (mediaPlayer != null) {
                mediaPlayer.stop();
                mediaPlayer.release();
                mediaPlayer = null;
            }
        }
    });

}

private void initializeMediaPlayer() {
    try {
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setDataSource("http://server3.pianosociety.com/protected/bach-bwv772-stahlbrand.mp3");
        mediaPlayer.prepare();
    } catch (IllegalArgumentException e) {
        // Mostramos mensaje en caso de error.
        Toast.makeText(getApplicationContext(), "URL no encontrada", 2000);
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

Кто-нибудь может помочь?

Спасибо.


person user1169292    schedule 09.02.2012    source источник
comment
ты решил это?   -  person Georgiy Chebotarev    schedule 25.06.2019


Ответы (1)


Я еще никогда не играл с мультимедийными действиями, но да, вы можете изменить вывод звука во время игры, например, вы можете использовать

audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
person Pedro Teran    schedule 09.02.2012
comment
Привет, Педро, я добавил код, который вы отправили, но он не работает при запуске кода приложения и останавливает выполнение. - person user1169292; 12.02.2012