如何根据铃声音量设置android MediaPlayer音量?

时间:2016-01-16 05:44:15

标签: android android-mediaplayer ringtone

如何根据铃声音量设置MediaPlayer音量?

我做了这个方法,但不起作用:

        MediaPlayer player = MediaPlayer.create(MyActivity.this, R.raw.sound);
        AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        int currentVolume = audio.getStreamVolume(AudioManager.RINGER_MODE_NORMAL);

        player.setVolume(currentVolume, currentVolume);

4 个答案:

答案 0 :(得分:6)

您应该使用setAudioStreamType()来设置要播放音频的音频流,而不是调整音量 - 这会自动使用所选流的音量。例如,如果您希望音频以与通知相同的音量播放,则可以使用AudioManager.STREAM_NOTIFICATION

mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);

答案 1 :(得分:1)

试一试:

AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);

答案 2 :(得分:0)

尝试播放AudioManager.STREAM_NOTIFICATION或AudioManager.STREAM_RING没有产生任何声音。我不得不通过AudioManager.STREAM_MUSIC。在Android: MediaPlayer setVolume function使用ssuukk的想法,我写了下面的代码:

   germany      german
     yemen      arabic
    france      french

答案 3 :(得分:0)

您可以尝试如下操作:

 AudioAttributes audioAttributes = new AudioAttributes.Builder()
            .setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN)
            .setLegacyStreamType(AudioManager.STREAM_RING)
            .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build();
    int s = audioManager.generateAudioSessionId();
    mediaPlayer = MediaPlayer.create(context, R.raw.default_ring,audioAttributes,s);
    mediaPlayer.setLooping(true);
    mediaPlayer.start();

您可以在setLegacyStreamType()中传递所需的流类型。如果您确实喜欢上面的内容,则voulme的媒体播放器将遵循在音频属性中传递给setLegacyStreamType()方法的流类型音量。