1

私はデータを読み取るために次のクラスを持っていますaccelerometer

  public class Accelerometer implements SensorEventListener {

    private SensorManager mSensorManager;
    private Sensor mAccelerometer;

    float deltaX;
    float deltaY;
    float deltaZ;

    Activity activity;

    public Accelerometer(Activity act)
    {
        this.activity = act;
        mSensorManager = (SensorManager) this.activity.getSystemService(Context.SENSOR_SERVICE);
        mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
    }


    public float getDeltaX()
    {
        return this.deltaX;
    }

    public float getDeltaY()
    {
        return this.deltaY;
    }

    public float getDeltaZ()
    {
        return this.deltaZ;
    }


    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub

        deltaX = event.values[0];
        deltaY = event.values[1];
        deltaZ = event.values[2];
    }
}

activity次のコードを使用して、メインクラスからこのクラスにアクセスしています。

Accelerometer sbt = new Accelerometer (this);
tvX.setText(Float.toString(sbt.getDeltaX()) + " " +Float.toString(sbt.getDeltaY()) + " "+Float.toString(sbt.getDeltaZ()));

ただし、常に0、0、0が表示されます。現在のコードの何が問題なのかわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

2

加速度計(およびすべてのセンサーデータ)は、コールバックシステムで動作します。次にセンサーを読み取るまで呼び出しは行われず、登録を解除するまでonSensorChangedを呼び出し続けます。ただし、登録直後にテキストを設定しようとすると、まだ呼び出されていません。新しい値で更新する場合は、onSensorChangedでtextViewを設定する必要があります。

于 2013-02-27T05:37:09.910 に答える