如何使用AudioManager将音量与音量同步

时间:2017-05-11 07:40:10

标签: android volume android-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
     }

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!)

我想要一种简单的数学方法 感谢

1 个答案:

答案 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)