如何根据铃声音量设置android MediaPlayer音量?
如何根据铃声音量设置MediaPlayer的音量 我采用了这种方法,但不起作用:如何根据铃声音量设置android MediaPlayer音量?,android,android-mediaplayer,ringtone,Android,Android Mediaplayer,Ringtone,如何根据铃声音量设置MediaPlayer的音量 我采用了这种方法,但不起作用: MediaPlayer player = MediaPlayer.create(MyActivity.this, R.raw.sound); AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int currentVolume = audio.getStreamVo
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);
试试看:
AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
您应该使用设置要播放音频的音频流,而不是调整音量-这将自动使用所选音频流的音量。例如,如果您想让音频以与通知相同的音量播放,可以使用:
尝试在AudioManager.STREAM\u通知或AudioManager.STREAM\u环上播放时未产生任何声音。我必须通过AudioManager.STREAM\u音乐。利用Ssuuk at的思想,我编写了以下代码:
AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
int volume_level1= am.getStreamVolume(AudioManager.STREAM_RING);
int maxVolume=am.getStreamMaxVolume(AudioManager.STREAM_RING);
final MediaPlayer mp1 = MediaPlayer.create(context, R.raw.notification_delivery);
mp1.setAudioStreamType(AudioManager.STREAM_MUSIC);
float log1=(float)(1-Math.log(maxVolume-volume_level1)/Math.log(maxVolume));
mp1.setVolume(log1,log1);
您可以尝试以下方法:
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()
方法。您实际想做什么?最初,我想使用NotificationManager,它将显示通知和声音,但仅当应用程序关闭时才显示。当应用程序处于活动状态时,我只想使用声音,因此,我尝试使用与铃声音量相同的MediaPlayer。这正是我需要做的。我只需要添加一个方法,如答案:,它就可以工作了。谢谢。这似乎不会导致任何错误,但我不再听到任何声音(即使我的通知量大大增加),并且查看文档,它说此方法在API级别21中被弃用。。。
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();