如何根据铃声音量设置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);
答案 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()
方法的流类型音量。