减少和增加浮动增量android

时间:2016-03-07 15:31:29

标签: java android audio increment

我试图通过屏幕按钮增加和减少音量。我在这里有代码:

//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然后停留在那里。

4 个答案:

答案 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.2fleftVolume将是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。

>>