0
私はAndroidでアクセラレータを使用しようとしていますが、結果を得るのに問題があります。加速度計がnullを返すようになる
加速度計はnullを返すことがあります。イベントリスナーが問題なのかどうかはわかりません。
public class CalibrateScreen extends AppCompatActivity implements SensorEventListener{
private SensorManager sensorMan;
private float mAccel;
private float mAccelCurrent;
private float mAccelLast;
boolean Calibration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calibrate_screen);
sensorMan = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor accelerometer = sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorMan.registerListener(CalibrateScreen.this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
mAccel = 0.00f;
mAccelCurrent = SensorManager.GRAVITY_EARTH;
mAccelLast = SensorManager.GRAVITY_EARTH;
Calibration = true;
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
// Shake detection
float x = sensorEvent.values[0];
float y = sensorEvent.values[1];
float z = sensorEvent.values[2];
mAccelLast = mAccelCurrent;
mAccelCurrent = (float) Math.sqrt(x*x + y*y + z*z);
float delta = mAccelCurrent - mAccelLast;
mAccel = mAccel * 0.9f + delta;
//mAccel is the current acceleration.
if (Calibration) {
addMember(mAccel);
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
@Override
protected void onResume() {
super.onResume();
sensorMan.registerListener(this, sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onStart() {
super.onStart();
sensorMan.registerListener(this, sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onStop() {
sensorMan.unregisterListener(this);
super.onStop();
}
}
完全なコードペーストビンはここにある:https://pastebin.com/uREm9Esd
は、問題が最初にある
「加速度計がnullを返す」と言ったときの意味を説明してください。この行からnullが返されることを意味しますか? 'sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);'? – CzarMatt
加速度計データ配列sensorEventは、常にnullで終了するようです –