Pasos de uso del sensor
1. Obtenga el objeto SensorManager a través de Contexto
2. Registre el oyente para sensorManager (en la reanudación de la actividad)
Significado del parámetro:
1.SensorEventListenner oyente para monitorear eventos de sensor
2., Sensor de sensor, objeto de sensor
3.int samplePeriodUs la frecuencia de adquisición de datos del sensor
(1) SensorManager.SENSOR_DELAY_GAME
(2) SensorManager.SENSOR_DELAY_FASTEST
(3) SensorManager.SENSOR_DELAY_UI
3. Anular el registro en el método de actividad onPause
sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);
Obtenga los datos de devolución de llamada en el método onSensorChanged
Reescribe onSensorChanged en el método de implementación de implements SensorEventListener,
que tiene tres valores para los valores de los ejes x, y y z: valores [0], valores [1], valores [2]
código java
package com.mt.sensor;
import android.annotation.TargetApi;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements SensorEventListener {
TextView exTxt1;
SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
exTxt1= findViewById(R.id.txt1);
//1.获取系统的传感器管理服务
sensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onResume() {
super.onResume();
//2.为系统的加速度传感器注册监听事件
sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() {
super.onPause();
//取消注册
sensorManager.unregisterListener(this);
}
//传感器的1值发生变化回调
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float[] values=sensorEvent.values;
String sb="x方向加速度:"+
values[0]+
"\nY轴方向加速度:"+
values[1]+
"\nZ轴方向加速度:"+
values[2];
exTxt1.setText(sb);
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
}
código xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/txt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>