如何使用指定时间获得Android的加速?

时间:2014-07-06 06:13:32

标签: android

我是一个java新手,

例如,我希望得到10个不同的手机加速值,

并从中获得平均值。

但我只能找到继续数据的答案,或只能找到一个数据。

现在我可以获取一个数据并将其显示在屏幕上。

我可以使用for循环计算10次吗?

谢谢。

public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    aAngle = event.values[0];
    bAngle = event.values[1];
}

private Button.OnClickListener listener = new Button.OnClickListener() {
switch(viewMode){
case VIEW_MODE_1:
title.setText(Double.toString(aAngle) + " " + Double.toString(bAngle));
            break;}

我试图在OnSensorChanged方法中强制转换for循环,但它根本不起作用。

2 个答案:

答案 0 :(得分:0)

每次传感器获得新读数时,都会触发onSensorChanged。你可以放置一个计数器进行十次更改。跟踪列表中的值,hashmap并聚合它们。

    public class SensorActivity extends Activity, implements SensorEventListener {
         private final SensorManager mSensorManager;
         private final Sensor mAccelerometer;
private int count=0;
private List<String> eventX=new ArrayList<String>();


         public SensorActivity() {
             mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
             mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
         }

         protected void onResume() {
             super.onResume();
             mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
         }

         protected void onPause() {
             super.onPause();
             mSensorManager.unregisterListener(this);
         }

         public void onAccuracyChanged(Sensor sensor, int accuracy) {
         }

         public void onSensorChanged(SensorEvent event) {
eventX.add(event.getValueMethodwhateverItis());
count++;
if (count=10){
//aggregate from list do anything you want.;
}
         }
     }

答案 1 :(得分:0)

我尝试这样做,但似乎有运行时错误。

List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
if (sensors.size() > 0 && sensors.size() <= 10) {
sensorManager.registerListener(this,sensors.get(count),SensorManager.SENSOR_DELAY_NORMAL); 
count ++;
}

另外,每当我的角度改变时,我会创建两个列表来保存结果。

for(int i = 0; i < aAngleList.size(); i++){
        double aAngleTotal = 0;
        double bAngleTotal = 0;
        aAngleTotal += aAngleList.get(i);
        bAngleTotal += bAngleList.get(i);
        aAngleAverage = aAngleTotal / aAngleList.size();
        bAngleAverage = bAngleTotal / bAngleList.size();
    }

public void onSensorChanged(SensorEvent event) {
    aAngleList.add(aAngle);
    bAngleList.add(bAngle);
}

for循环位于onResume,位于if(sensors ...)

的正下方