android传感器---加速度

博客介绍了加速度传感器,它用于描述物体运动速度改变快慢,单位为m/s²。还说明了获取传感器管理器实例的代码,通过SensorManager可调用getDefaultSensor()方法获取加速度传感器。其输出信息存于SensorEvent的value数组,不同手机放置状态下加速度对应不同轴。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加速传感器

是一种用于描述物体运动速度改变快慢的物理量,以m/s2为单位

一 获取传感器管理器的实例

SensorManager manager = (SernsorManager)getSystemService(SENSOR_SERVICE)

SensorManager 是系统中所有传感器的管理器, 有了它可以调用getDefaultSensor()方法

Sensor sensor = sensorMananger.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)

加速度传感器输出的信息同样是存放在SensorEvent 的value数组中的,values数组中有三个值,分别代表x,y,z轴上的加速度信息

手机平放上,加速度是Z轴

手机竖立 加速度在Y轴

手机横立,加速度在X轴

基本的传感器

package com.yifei.myapplication;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private TextView textView;
    SensorManager manager;
    Sensor sensor;
    private MySensorEventListener mySensorEventListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.text);
        //得到传感器管理器实例
        manager = (SensorManager) getSystemService(SENSOR_SERVICE);
        mySensorEventListener = new MySensorEventListener();
        if (manager != null) {
            //获取传感器实例
            sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            if (sensor != null) {
                //注册加速度传感器
                manager.registerListener(mySensorEventListener, sensor, SensorManager.SENSOR_DELAY_GAME);
            }
        }


    }

    //监听器
    private class MySensorEventListener implements SensorEventListener {
        //当传感器的精度发送变化时通用的方法
        @Override
        public void onSensorChanged(SensorEvent event) {
            //当前传感器的值可为负值
            float xValue = Math.abs(event.values[0]);
            float yValue = Math.abs(event.values[1]);
            float zValue = Math.abs(event.values[2]);
            Log.d("MainActivity12", "onSensorChanged: " + xValue + "-->" + yValue + "-->" + zValue);
        }

        //当传感器的值发生变化
        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    }

    //activity销毁时,销毁传感器的监听器
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(manager!=null){
            manager.unregisterListener(mySensorEventListener);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值