OnSensorChanged() 不改变循环中的值

OnSensorChanged() not changing value in loop

我试图在 1 秒内获得 100 个加速度计读数,但不是 100 个不同的读数,它给了我 1 个相同的读数 100 次。

当我在我的应用程序中按下按钮时,我试图显示这 100 个加速度计读数

我的 MainActivity 有这个名为

的变量
float ax;

这是连续存储加速度计读数(x 轴)的地方。

我的 OnCreate() 方法中有这个按钮代码

 button = (Button)findViewById(R.id.startbutton); //inits button
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {               
            BuildTable();
        }
    });

触发 BuildTable() 函数(在应用程序本身上显示输出)

我的 BuildTable() 有这样的东西

 public void BuildTable()
{       

    TableRow trow = new TableRow(this);
    TextView text = new TextView(this);       

    int count = 0;

    while (count < 100)
    {

        if(System.currentTimeMillis() - lasttime >= 10)
        {

            lasttime = System.currentTimeMillis();              
            text = new TextView(this);
            Log.d("MyApp","ax is: "+ax);
            text.setText(""+ax);
            trow = new TableRow(this);
            trow.addView(text);
            table.addView(trow,count);
            count++;

        }

    }
}

OnSensorChanged() 函数如下所示

@Override
public void onSensorChanged(SensorEvent event) {     
    ax = event.values[0];      

}

这只是更新 ax。

点击按钮如何暂停ax的更新?我该如何解决这个问题?

干杯

尝试使用

在 onSensorChanged 函数中过滤结果
@Override
public void onSensorChanged(SensorEvent event)
{    
   if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
   { 
       ax = event.values[0];      
   }
}

我找到了绕过冻结 onSensorChanged() 循环的方法!

我基本上必须借助可运行对象和 'flag' 变量来实现多线程(注意 'flag' 变量必须是 static)。

我将我的 BuildTable() 函数放在一个新的 Runnable 中,然后将其插入到一个线程中。所以有一个主线程(我想用于 GUI)和一个单独的线程,必须对其进行修改以专门接收和存储传感器读数。

然后 table 中这些变量的实际显示是在主线程(我认为它称为 UIThread)中执行的,借助于 'flag' 变量,这些变量也被我修改了BuildTable() 线程(因此 'flag' 变量必须是 static)。

我可以添加代码片段以获得更多提示,但也许稍后或者当有人要求时,时间有点早

干杯!