加速度計の値を使用する方法を示す他の多くのスレッドを見てきましたが、複数のクラスにまたがることさえありますが、私が見つけた方法はどれも機能せず、何をしても他のクラスに表示する値を取得できませんそれらが定義されているものよりも。動作中の加速度計があり、AccelerometerReader クラスが値を正しく取得していることを知っています。そのクラスでそれらを印刷してテストしたからです。以下にいくつかのコードがありますが、開始値のみが別のクラスに渡され、更新されていないと考えていますが、なぜ機能しないのかわかりません。どんな助けでも大歓迎です!
AccelerometerReader クラス
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
public class AccelerometerReader extends Activity implements SensorEventListener {
private SensorManager sensorManager;
private float ax; // these are the acceleration in x, y and z axes
private float ay;
private float az;
public AccelerometerReader(float x, float y, float z) {
this.ax = x;
this.ay = y;
this.az = z;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
return;
if (event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
setValueX(event.values[0]);
setValueY(event.values[1]);
setValueZ(event.values[2]);
}
}
public void setValueX(float x) {
ax=x;
}
public float getValueX() {
return ax;
}
public void setValueY(float y) {
ay=y;
}
public float getValueY() {
return ay;
}
public void setValueZ(float z) {
az=z;
}
public float getValueZ() {
return az;
}
}
加速度計クラス
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Accelerometer extends Activity {
private float ax, ay, az;
TextView tvX, tvY, tvZ;
AccelerometerReader acc = new AccelerometerReader(ax, ay, az);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvX = (TextView) findViewById(R.id.tvX);
tvY = (TextView) findViewById(R.id.tvY);
tvZ = (TextView) findViewById(R.id.tvZ);
tvX.setText("" + ax);
tvY.setText("" + ay);
tvZ.setText("" + az);
}
}