Это код для получения показаний гироскопа и акселерометра; Мне нужно сохранить эти данные в файле на моем смартфоне.
Получены показания акселерометра и гироскопа. Они отображаются в моем приложении. Однако я не могу правильно добавить задержку, что приводит к неэффективным результатам. Как мне добавить задержку, чтобы получить желаемые результаты?
package com.example.sensor;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private static final String TAG = "MainActivity";
private SensorManager sensorManager;
private Sensor accelerometer, mGyro;
TextView xValue, yValue, zValue, xGyroValue, yGyroValue, zGyroValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xValue = (TextView) findViewById(R.id.xValue);
yValue = (TextView) findViewById(R.id.yValue);
zValue = (TextView) findViewById(R.id.zValue);
xGyroValue = (TextView) findViewById(R.id.xGyroValue);
yGyroValue = (TextView) findViewById(R.id.yGyroValue);
zGyroValue = (TextView) findViewById(R.id.zGyroValue);
Log.d(TAG, "onCreate: Initializing Sensor Services");
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if (accelerometer != null) {
sensorManager.registerListener(MainActivity.this, accelerometer, SensorManager.SENSOR_STATUS_ACCURACY_HIGH);
Log.d(TAG, "onCreate: Registered Accelerometer Listener");
} else {
xValue.setText("Accelerometer not supported");
yValue.setText("Accelerometer not supported");
zValue.setText("Accelerometer not supported");
}
mGyro = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
if (mGyro != null) {
sensorManager.registerListener(MainActivity.this, mGyro, SensorManager.SENSOR_STATUS_ACCURACY_HIGH);
Log.d(TAG, "onCreate: Registered Gyroscope Listener");
} else {
xGyroValue.setText("Gyro not supported");
yGyroValue.setText("Gyro not supported");
zGyroValue.setText("Gyro not supported");
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Sensor sensor = sensorEvent.sensor;
if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
Log.d(TAG, "onSensorChanged: X:" + sensorEvent.values[0] + "Y:" + sensorEvent.values[1] + "Z:" + sensorEvent.values[2]);
xValue.setText("xValue:" + sensorEvent.values[0]);
yValue.setText("yValue:" + sensorEvent.values[1]);
zValue.setText("zValue:" + sensorEvent.values[2]);
} else if (sensor.getType() == Sensor.TYPE_GYROSCOPE) {
xGyroValue.setText("xGValue:" + sensorEvent.values[0]);
yGyroValue.setText("yGValue:" + sensorEvent.values[1]);
zGyroValue.setText("zGValue:" + sensorEvent.values[2]);
}
}
}
Пожалуйста, помогите.