Android 使用我的音量设置播放声音
我正在开发一个应用程序,根据特定的间隔播放一些声音。我让用户控制这些声音的音量。现在告诉用户一切正常,音量水平与用户之前选择的相同。但这里的问题是,设备的音量水平也发生了变化。 问题是:如何在不影响设备音量的情况下以音量播放我的声音Android 使用我的音量设置播放声音,android,audio,Android,Audio,我正在开发一个应用程序,根据特定的间隔播放一些声音。我让用户控制这些声音的音量。现在告诉用户一切正常,音量水平与用户之前选择的相同。但这里的问题是,设备的音量水平也发生了变化。 问题是:如何在不影响设备音量的情况下以音量播放我的声音 defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); AudioManager mAudioManager = (AudioManager) getSystem
defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int streamMaxVolume = mAudioManager.getStreamMaxVolume(3);
vol = defaultSharedPreferences.getInt("vol_one", streamMaxVolume);
mAudioManager.setStreamVolume(3, vol, 0);
playsound();
更新:根据Biraj解决方案
要获取每个设备允许的最大音量,请使用int streamMaxVolume而不是max_volume变量。
因此,完整的答案是:
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int streamMaxVolume = mAudioManager.getStreamMaxVolume(3);
vol = defaultSharedPreferences.getInt("vol_one", streamMaxVolume);
setVolume(vol);
*
*
*
public void setVolume(int soundVolume){
final float volume = (float) (1 - (Math.log(streamMaxVolume- soundVolume) / Math.log(streamMaxVolume)));
mediaPlayer.setVolume(volume, volume);
}
不要使用
AudioManager
设置音量。使用MediaPlayer.setVoume()
说明:
setVolume (float leftVolume, float rightVolume)
设置此播放机的音量。建议使用此API来平衡应用程序中音频流的输出。除非您编写应用程序来控制用户设置,否则此API应优先于设置特定类型的所有流的卷的setStreamVolume(int,int,int)。请注意,传递的体积值是0.0到1.0范围内的原始标量。UI控件应按对数缩放
参数
左卷左卷标量
右卷右卷标量
有关更多信息,请访问不要使用
AudioManager
来setVolume
。使用MediaPlayer.setVoume()
说明:
setVolume (float leftVolume, float rightVolume)
设置此播放机的音量。建议使用此API来平衡应用程序中音频流的输出。除非您编写应用程序来控制用户设置,否则此API应优先于设置特定类型的所有流的卷的setStreamVolume(int,int,int)。请注意,传递的体积值是0.0到1.0范围内的原始标量。UI控件应按对数缩放
参数
左卷左卷标量
右卷右卷标量
有关更多信息,请访问不要使用
AudioManager
来setVolume
。使用MediaPlayer.setVoume()
说明:
setVolume (float leftVolume, float rightVolume)
设置此播放机的音量。建议使用此API来平衡应用程序中音频流的输出。除非您编写应用程序来控制用户设置,否则此API应优先于设置特定类型的所有流的卷的setStreamVolume(int,int,int)。请注意,传递的体积值是0.0到1.0范围内的原始标量。UI控件应按对数缩放
参数
左卷左卷标量
右卷右卷标量
有关更多信息,请访问不要使用
AudioManager
来setVolume
。使用MediaPlayer.setVoume()
说明:
setVolume (float leftVolume, float rightVolume)
设置此播放机的音量。建议使用此API来平衡应用程序中音频流的输出。除非您编写应用程序来控制用户设置,否则此API应优先于设置特定类型的所有流的卷的setStreamVolume(int,int,int)。请注意,传递的体积值是0.0到1.0范围内的原始标量。UI控件应按对数缩放
参数
左卷左卷标量
右卷右卷标量
有关更多信息,请访问谢谢。但是你这么说是什么意思(我指的是参数):mediaPlayer.setVolume(volume,volume);它将设置MediaPlayer的音量,并且不会影响设备设置。您能解释更多吗?setVolume方法中有两个参数,volume和volume!!那些是什么?哪一个是浮动值?其他(音量)参数是什么?如何检测设备的最大允许音量?因为我认为设备有不同的最大容量谢谢。但是你这么说是什么意思(我指的是参数):mediaPlayer.setVolume(volume,volume);它将设置MediaPlayer的音量,并且不会影响设备设置。您能解释更多吗?setVolume方法中有两个参数,volume和volume!!那些是什么?哪一个是浮动值?其他(音量)参数是什么?如何检测设备的最大允许音量?因为我认为设备有不同的最大容量谢谢。但是你这么说是什么意思(我指的是参数):mediaPlayer.setVolume(volume,volume);它将设置MediaPlayer的音量,并且不会影响设备设置。您能解释更多吗?setVolume方法中有两个参数,volume和volume!!那些是什么?哪一个是浮动值?其他(音量)参数是什么?如何检测设备的最大允许音量?因为我认为设备有不同的最大容量谢谢。但是你这么说是什么意思(我指的是参数):mediaPlayer.setVolume(volume,volume);它将设置MediaPlayer的音量,并且不会影响设备设置。您能解释更多吗?setVolume方法中有两个参数,volume和volume!!那些是什么?哪一个是浮动值?其他(音量)参数是什么?如何检测设备的最大允许音量?因为我认为设备的最大容量不同