如果这个问题看起来很愚蠢,我仍在学习 Android 开发,很抱歉,但我只是在有限的时间内尝试从手机获取加速度计数据。目标是在单击按钮后仅记录传感器的 x 坐标值约 3 秒。
public class AccelerometerTestingActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
float x_event[];
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
// add listener. The listener will be HelloAndroid (this) class
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_GAME);
}
public void onAccuracyChanged(Sensor sensor,int accuracy){
}
public void onSensorChanged(SensorEvent event){
// check sensor type
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
// assign directions
float x=event.values[0];
x_event=addArrayElement(x_event,x);
}
}
private float[] addArrayElement(float[] currentArray, float x) {
// TODO Auto-generated method stub
float newArray[] = new float[currentArray.length+1];
int i= 0;
for(i=0;i<currentArray.length;i++)
{
newArray[i] = currentArray[i];
}
newArray[i+1]=x;
return newArray;
}
所以 x_event 是一个数组,每个 SENSOR_DELAY_GAME 周期性地填充加速度计的 X 位置。
问题是,此代码在活动运行时记录所有值。
我想要的是仅在单击按钮时填充此数组,并且仅填充 x 秒(尚未确定 x 的值)。之后,数组将被传递给另一个函数进行分析。
我只是不明白如何及时限制监听器。
感谢您的帮助。