如何使用 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)