如何将Media Player与手机音量同步?

时间:2015-03-08 18:55:38

标签: android android-mediaplayer

我注意到,无论我设置手机的音量如何,我的应用程序中单击按钮的声音都保持不变,我该如何将其与手机的系统音量同步?这是我使用的代码格式

Mediaplayer buttonSoundClick;

buttonClickSound = MediaPlayer.create(this, R.raw.button_click_sound);

buttonClickSound.start();



    buttonClickSound = MediaPlayer.create(this, R.raw.button_click_sound);
} private void prepareAsync() {

    buttonClickSound.setAudioStreamType(AudioManager.STREAM_MUSIC);
}


@Override
public void onClick(View v) {

//Button Click Sound
        buttonClickSound.start();

1 个答案:

答案 0 :(得分:0)

Android针对不同的流类型具有不同的音量级别。

覆盖onKeyDown()并添加以下代码。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

    switch (keyCode) {

        case KeyEvent.KEYCODE_VOLUME_UP:
            audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
            return true;

        case KeyEvent.KEYCODE_VOLUME_DOWN:
            audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
            return true;

        default:
            return false;
    }
}

在此之后,尝试使用流类型来使其适合您的应用。可用的流类型是:

AudioManager.STREAM_MUSIC
AudioManager.STREAM_RING
AudioManager.STREAM_ALARM
AudioManager.STREAM_SYSTEM
AudioManager.STREAM_NOTIFICATION

您可以使用MediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)

直接设置MediaPlayer流类型

购买时,您必须在prepare()prepareAsync()之前调用此方法,以便目标流类型此后生效。