0

エラーの場所を知るためにすべてのコードにコメントを付けた後、mDisplay.getRotation() からのものであることがわかりました。私のコードの一般的な考え方は、加速度計がどの方向にある場合でも、加速度計から適切な情報を取得することです。これが私のコードです

public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    // Récupérer les valeurs du capteur
    float x, y, z;
    String s1 = "stringX", s2 = "stringY", s3 = "stringZ";

    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

        switch (mDisplay.getRotation()) {
        case Surface.ROTATION_0:
            x = event.values[0];
            y = event.values[1];
            s1 = "" + x;
            s2 = "" + y;
            break;
        case Surface.ROTATION_90:
            x = -event.values[1];
            y = event.values[0];
            s1 = "" + x;
            s2 = "" + y;
            break;
        case Surface.ROTATION_180:
            x = -event.values[0];
            y = -event.values[1];
            s1 = "" + x;
            s2 = "" + y;
            break;
        case Surface.ROTATION_270:
            x = event.values[1];
            y = -event.values[0];
            s1 = "" + x;
            s2 = "" + y;
            break;
        }
        z = event.values[2];   
        s3 = "" + z;

        tvx.setText(s1);
        tvy.setText(s2);
        tvz.setText(s3);

    }
}

また、 onCreate() の前にディスプレイを宣言しました

private Display mDisplay;

しかし、私はまだjavaNullPointer :sを持っています

君たちありがとう。

4

1 に答える 1

0

あなたが必要

mDisplay = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
于 2013-05-13T07:52:17.643 に答える