La realización del sensor Android (caso de inicio)

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>

Pantalla de interfaz

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_45353823/article/details/107459714
Recomendado
Clasificación