传感器应用
一、实验思路
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权限及配置:
传感器常量对应的数值 :
- 加速度 TYPE_ACCELEROMETER SENSOR_TYPE_ACCELEROMETER 1
- 磁力域 TYPE_MAGNETIC_FIELD SENSOR_TYPE_MAGNETIC_FIELD 2
- 方向 TYPE_ORIENTATION SENSOR_TYPE_ORIENTATION 3
- 陀螺 TYPE_GYROSCOPE SENSOR_TYPE_GYROSCOPE 4
- 光线(亮度)TYPE_LIGHT SENSOR_TYPE_LIGHT 5
- 压力 TYPE_PRESSURE SENSOR_TYPE_PRESSURE 6
- 温度 TYPE_TEMPERATURE SENSOR_TYPE_TEMPERATURE 7
- 临近性 TYPE_PROXIMITY SENSOR_TYPE_PROXIMITY 8
Android所有的传感器都归传感器管理器SensorManager 管理,从传感器管理器中获取其中某个或者某些传感器的方法有如下三种:
第一种:获取某种传感器的默认传感器
第二种:获取某种传感器的列表
第三种:获取所有传感器的列表
对于某一个传感器,它的一些具体信息的获取方法可以见下表: - getMaximumRange() 最大取值范围
- getName() 设备名称
- getPower() 功率
- getResolution() 精度
- getType() 传感器类型
- getVentor() 设备供应商
- 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
本程序代码经学习第一行代码和疯狂的安卓以及网上查阅资料完成,不足之处希望大家指出。