Andoid Studio-android开发04-获取加速度传感器数据并显示在屏幕上

android手机内有多个传感器,比如加速度计、陀螺仪等。

本篇介绍如何获取加速度数据并显示到TextView上。

一、想要达到的效果

 Andoid Studio-android开发04-获取加速度传感器数据并显示在屏幕上_第1张图片

功能:

1、点击开始按钮时,启动加速度传感器,读取数据,显示到屏幕上;

2、点击停止按钮,停止加速度传感器。

知识点:

1、一个activity怎样实现两个接口

2、怎样获得传感器服务,注册服务,注销服务

3、怎样获得button、textview句柄,以便操作

4、怎样关联button的click事件

二、activity文件

 





    

    

    

    

三、java代码文件 

package com.example.myapplication;

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.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements SensorEventListener,View.OnClickListener {

    private SensorManager mSensorMgr;
    private  TextView tvx;
    private  TextView tvy;
    private  TextView tvz;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt=findViewById(R.id.bt_dsp);
        bt.setOnClickListener(this);

        Button bt_stop=findViewById(R.id.bt_stop);
        bt_stop.setOnClickListener(this);

        tvx=findViewById(R.id.tvx);
        tvy=findViewById(R.id.tvy);
        tvz=findViewById(R.id.tvz);
        //
        mSensorMgr=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
    }

    protected void onPause()
    {
        super.onPause();
        mSensorMgr.unregisterListener(this);
    }

    protected void onResume()
    {
        super.onResume();
    }
    protected void onStop()
    {
        super.onStop();
        mSensorMgr.unregisterListener(this);

    }
    public void onSensorChanged(SensorEvent event)
    {
        if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER)
        {
            float[] values=event.values;

            tvx.setText("ACC_X: "+Float.toString(values[0]));
            tvy.setText("ACC_Y: "+Float.toString(values[1]));
            tvz.setText("ACC_Z: "+Float.toString(values[2]));

        }
    }
    public void onAccuracyChanged(Sensor sensor,int accuracy)
    {//不用处理,空着就行
        return;
    }

    public void onClick(View v)
    {
         if(v.getId()==R.id.bt_dsp)
         {
             mSensorMgr.unregisterListener(this,mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));
             mSensorMgr.registerListener(this,
                     mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                     SensorManager.SENSOR_DELAY_NORMAL);
             return;
         }
         if(v.getId()==R.id.bt_stop)
         {
             mSensorMgr.unregisterListener(this);
             return;
         }
    }
}

 

你可能感兴趣的:(Java,android,studio,传感器,android,studio,安卓)