エラーの場所を知るためにすべてのコードにコメントを付けた後、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を持っています
君たちありがとう。