android - 如何在android studio中以定义的时间速率从传感器获取数据?
问题描述
我正在尝试使用使用手机加速度计的 android studio 制作一个简单的应用程序。
我可以获取加速度计数据并以非常高的速率将它们显示在屏幕上,所以我想控制采样时间。
我想测量每秒的加速度,并在屏幕上显示加速度以及测量了多少时间。
我真的不知道从哪里开始。
这是代码
package com.example.bustinedathe;
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;
Sensor accelerometer;
TextView xValue, yValue, zValue;
@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);
Log.d(TAG, "onCreate: Inizialising sensor services");
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(MainActivity.this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
Log.d(TAG, "onCreate: registered accelerometer listner");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Log.d(TAG, "onSensorChanged: X:" + sensorEvent.values[0] + "y:" + sensorEvent.values[1] + "z:" + sensorEvent.values[2]);
float x = sensorEvent.values[0];
float y = sensorEvent.values[1];
float z = sensorEvent.values[2];
xValue.setText("x---->"+x);
yValue.setText("y---->"+y);
zValue.setText("z---->"+z);
}
}