0

我正在做一个学校项目,我必须“测量”声音,比如分贝。我在网上搜索教程等,发现了一些很棒的脚本。我可以直观地看到我的移动设备检测到了声音,但我也想看到一个数字,声音的响度。

我可以显示 a doubleor intin a textview,但是这个数字不会改变textvieworinteger本身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 没有变化?

4

1 回答 1

0
public void run() {
    if (mTestMode) {
        double amp = mSensor.getAmplitudeEMA();
        tv.setText(String.valueOf(amp));
    }
}
于 2013-06-17T15:23:20.933 回答