如何使用 AudioManager 同步音乐音量和铃声音量
how to sync music volume with ring volume using AudioManager
这是我的代码:
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
}
设置音量函数:
private void setVolume(Context c,int streamName,int volume){
AudioManager manager =
(AudioManager) c.getSystemService(Context.AUDIO_SERVICE);
manager.setStreamVolume(streamName,volume,0);
}
我想要同步音乐音量和铃声音量,但它不起作用,因为它们的范围不同(最大音乐音量为 15,最大铃声音量为 7!)
我想要一个简单的数学方法
谢谢
如果您在 [a,b]
范围内有数字 x
,并且您想将它们转换为 [c,d]
范围内的数字 y
,您需要这样做:
y = ((x−a) * (d−c) / (b−a)) + c
你的情况:
x
: 铃声音量
[a,b]
: 0-7
[c,d]
: 0-15
y
: 音乐音量
你得到:
music_volume = ring_volume * (15 / 7)
这是我的代码:
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
}
设置音量函数:
private void setVolume(Context c,int streamName,int volume){
AudioManager manager =
(AudioManager) c.getSystemService(Context.AUDIO_SERVICE);
manager.setStreamVolume(streamName,volume,0);
}
我想要同步音乐音量和铃声音量,但它不起作用,因为它们的范围不同(最大音乐音量为 15,最大铃声音量为 7!)
我想要一个简单的数学方法 谢谢
如果您在 [a,b]
范围内有数字 x
,并且您想将它们转换为 [c,d]
范围内的数字 y
,您需要这样做:
y = ((x−a) * (d−c) / (b−a)) + c
你的情况:
x
: 铃声音量[a,b]
: 0-7[c,d]
: 0-15y
: 音乐音量
你得到:
music_volume = ring_volume * (15 / 7)