我的大学之Android系统应用层软件设计系列NO.5

本文详细介绍如何在Android环境下使用SensorManager管理各类传感器,包括磁场、方向、压力、陀螺仪等,通过实例演示数据获取与处理方法。

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

传感器应用
一、实验思路
1、学习SensorManager使用方法
2、了解常用传感器数据获取方法
3、尝试曲线绘制方法

二、实验环境
1.jdk1.8.0_201
2.Android Studio3.3以上
3.Android 8.0(API level 26)

三、项目分析
1.需求分析:选取磁场传感器、方向传感器、压力传感器、陀螺仪、湿度传感器、光线传感器或其它手机携带的传感器作为实验对象。
2.所用技术
传感器的使用
3.Tips
2.传感器API需要使用的Android权限及配置:
传感器常量对应的数值 :

  1. 加速度 TYPE_ACCELEROMETER SENSOR_TYPE_ACCELEROMETER 1
  2. 磁力域 TYPE_MAGNETIC_FIELD SENSOR_TYPE_MAGNETIC_FIELD 2
  3. 方向 TYPE_ORIENTATION SENSOR_TYPE_ORIENTATION 3
  4. 陀螺 TYPE_GYROSCOPE SENSOR_TYPE_GYROSCOPE 4
  5. 光线(亮度)TYPE_LIGHT SENSOR_TYPE_LIGHT 5
  6. 压力 TYPE_PRESSURE SENSOR_TYPE_PRESSURE 6
  7. 温度 TYPE_TEMPERATURE SENSOR_TYPE_TEMPERATURE 7
  8. 临近性 TYPE_PROXIMITY SENSOR_TYPE_PROXIMITY 8
    Android所有的传感器都归传感器管理器SensorManager 管理,从传感器管理器中获取其中某个或者某些传感器的方法有如下三种:
    第一种:获取某种传感器的默认传感器
    第二种:获取某种传感器的列表
    第三种:获取所有传感器的列表
    对于某一个传感器,它的一些具体信息的获取方法可以见下表:
  9. getMaximumRange() 最大取值范围
  10. getName() 设备名称
  11. getPower() 功率
  12. getResolution() 精度
  13. getType() 传感器类型
  14. getVentor() 设备供应商
  15. getVersion() 设备版本号

四、部分代码
1.获取界面上的EditText组件

etOrientation=(EditText)findViewById(R.id.etOrientation);
etGyro=(EditText)findViewById(R.id.etGyro);

2.获取传感器管理服务

mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);

}
3.为系统的方向传感器注册监听器

    mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
                SensorManager.SENSOR_DELAY_GAME);
mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE),
                SensorManager.SENSOR_DELAY_GAME);
//传感器精度改变时回调方法
    public void onAccuracyChanged(Sensor sensor,int accuracy){ }
    @Override
    public void onSensorChanged(SensorEvent event){
        float[] values=event.values;
        //获取触发event的传感器类型
        int sensorType=event.sensor.getType();
        StringBuilder sb=null;
        //判断是哪个传感器发生改变
        switch (sensorType){
            //方向传感器
            case Sensor.TYPE_ORIENTATION:
                sb = new StringBuilder();
                sb.append("绕z轴转过的角度:");
                sb.append(values[0]);
                sb.append("\n绕X轴转过的角度:");
                sb.append(values[1]);
                sb.append("\n绕Y轴转过的角度:");
                sb.append(values[2]);
                etOrientation.setText(sb.toString());
                break;
            //陀螺仪传感器
            case Sensor.TYPE_GYROSCOPE:
                sb=new StringBuilder();
                sb.append("绕X轴旋转的角强度:");
                sb.append(values[0]);
                sb.append("\n绕Y轴旋转的角强度:");
                sb.append(values[1]);
                sb.append("\n绕Z轴旋转的角强度:");
                sb.append(values[2]);
                etGyro.setText(sb.toString());
                break;

码云地址:https://gitee.com/Wwmf/sensor
本程序代码经学习第一行代码和疯狂的安卓以及网上查阅资料完成,不足之处希望大家指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值