我试图通过屏幕按钮增加和减少音量。我在这里有代码:
//variables
float leftVolume = 0.5f;
float rightVolume = 0.5f;
public void lowerVolume(View view)
{ float decrement = 0.2f;
rightVolume -= decrement;
leftVolume -= decrement;
Log.d("Values","This is the value of volume"+ leftVolume);
}
public void raiseVolume(View view)
{ float increment = 0.2f;
rightVolume = ++increment;
leftVolume = ++increment;
Log.d("Values","This is the value of volume"+ rightVolume);
}
日志显示了一些疯狂的值,比如母鸡我点击rasieVolume,它会转到1.2f然后停留在那里。
答案 0 :(得分:1)
这种情况正在发生,因为每次调用raiseVolume()
时都要将浮点值设置为1.2。
public void raiseVolume(View view)
{ float increment = 0.2f; //you set increment here
rightVolume = ++increment; //then simply increase it by 1
leftVolume = ++increment;
//...and so your volume will always be 1.2 at this point
Log.d("Values","This is the value of volume"+ rightVolume);
}
解决此问题的方法是将音量设置为raiseVolume()
方法(您已经执行过)的初始值OUTSIDE,然后将其增加到raiseVolume()
方法中。
像这样:
//variables
float leftVolume = 0.5f;
float rightVolume = 0.5f;
public void raiseVolume(View view)
{ float increment = 0.2f;
rightVolume += increment; //change this line to this
leftVolume += increment; //change this line to this
Log.d("Values","This is the value of volume"+ rightVolume);
}
答案 1 :(得分:0)
这是因为此代码会将increment
增加到1.2f
:
rightVolume = ++increment;
然后rightVolume
将是1.2f
,leftVolume
将是2.2f
。
因此,您应该像在lowerVolume
中一样更改值:
rightVolume += increment;
leftVolume += increment;
答案 2 :(得分:0)
每次增量增量值增加1并将其限制在右侧或左侧音量时,请使用以下内容。
[StringLength(80)]
public new string UserName {get;set;}
答案 3 :(得分:0)
严格意义上给出的所有答案都是正确的,但我只想指出典型的音量控制是对数渐变而非线性。这与响度的感知有关。如果你想跟随那个模型,那么你想要乘法和除法而不是加减。此外,另一方面注意:在任何数字信号处理中使用的音量将要保持在0到1的范围内,其中1.0表示全输出电平,0表示静音。如果您想要这种行为,那么您还应该在raiseVolume过程中将值剪切为< = 1.0。
>>