我正在做一个学校项目,我必须“测量”声音,比如分贝。我在网上搜索教程等,发现了一些很棒的脚本。我可以直观地看到我的移动设备检测到了声音,但我也想看到一个数字,声音的响度。
我可以显示 a double
or int
in a textview
,但是这个数字不会改变textview
orinteger
本身double
应该并且确实会改变,但我看不到这一点。可能不更新了?
这是我主要活动中最重要的代码。
private TextView tv;
double amp = 0.0;
public void run() {
double amp = mSensor.getAmplitudeEMA();
if (mTestMode) updateDisplay(amp);
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSensor = new SoundMeter();
tv = (TextView) findViewById(R.id.amplitude);
tv.setText(String.valueOf(amp));
mTestMode = true;
start();
}
所以当我运行这段代码时,我在屏幕上看到 0.0,但是当我说话时,double amp
应该改变,但我仍然看到 0.0。
不,检测声音的脚本有效,我知道这是因为您可以直观地看到它,您可以通过动画看到它,声音低时有 3 小节,声音变大时会有更多小节。
但我的问题是,为什么不double amp
更新本身?为什么 0.0 没有变化?