这是我的代码:
if(setting.getBoolean("autoVolume",false))
{
setVolume(c,AudioManager.STREAM_MUSIC,manager.getStreamVolume(AudioManager.STREAM_RING));
Log.e("max ring volume",manager.getStreamMaxVolume(AudioManager.STREAM_RING)+"");//result:7
Log.e("max music volume",manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)+"");//result 15
}
setVolume函数:
private void setVolume(Context c,int streamName,int volume){
AudioManager manager =
(AudioManager) c.getSystemService(Context.AUDIO_SERVICE);
manager.setStreamVolume(streamName,volume,0);
}
我希望同步音乐音量与铃声音量但是它不起作用,因为它们没有相同的范围(最大音乐音量为15,最大铃声音量为7!)
我想要一种简单的数学方法 感谢
答案 0 :(得分:0)
如果您的数字x
在[a,b]
范围内,并且您希望将其转换为y
范围内的数字[c,d]
,则需要执行以下操作:
y = ((x−a) * (d−c) / (b−a)) + c
在你的情况下:
x
:响铃量[a,b]
:0-7 [c,d]
:0-15 y
:音量你得到:
music_volume = ring_volume * (15 / 7)