Android学习-传感器的使用
来源:互联网 发布:自学编程 知乎 编辑:程序博客网 时间:2024/05/22 10:32
Android中的MEMS传感器有很多种,本节主要介绍其中几种使用方法。
要获取传感器的数值需要两个类: android.hardware.SensorManager
android.hardware.Sensor
接口需要: android.hardware.SensorEventListener
假如我定义
private SensorManager mSensorManager;private Sensor mAccelerometer;
使用之前需要在Activity的onCreate()
方法里
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
其中Sensor有很多常量
TYPE_ALL:所有的传感器
TYPE_ACCELEROMETER:加速度计
TYPE_AMBIENT_TEMPERATURE:环境温度
TYPE_GAME_ROTATION_VECTOR:未校准的旋转矢量传感器
TYPE_GEOMAGNETIC_ROTATION_VECTOR:地磁旋转矢量传感器
TYPE_GRAVITY:重力传感器
TYPE_GYROSCOPE:陀螺仪
TYPE_GYROSCOPE_UNCALIBRATED未校准的陀螺仪
TYPE_HEART_BEAT:运动检测传感器
TYPE_HEART_RATE:心率传感器
TYPE_LIGHT:光照强度传感器
TYPE_LINEAR_ACCELERATION:线性加速度计
TYPE_MAGNETIC_FIELD:磁场传感器
TYPE_MAGNETIC_FIELD_UNCALIBRATED:未校准的磁场传感器
TYPE_MOTION_DETECT:运动检测传感器 TYPE_ORIENTATION:方向传感器,在API8中已弃用
TYPE_POSE_6DOF:具有6个自由度的姿势传感器
TYPE_PRESSURE:压力传感器
TYPE_PROXIMITY:距离传感器
TYPE_RELATIVE_HUMIDITY:相对湿度传感器
TYPE_ROTATION_VECTOR:旋转矢量传感器
TYPE_SIGNIFICANT_MOTION:重要运动触发传感器
TYPE_STATIONARY_DETECT:静止状态传感器
TYPE_STEP_COUNTER:计步计数器
TYPE_STEP_DETECTOR:计步检测器
PS:部分Android设备可能没有一部分传感器
需要该Activity实现SensorEventListener
接口
SensorEventListener
接口有两个方法
//该方法是监听传感器数值变化的,event里面储存当前传感器的信息public void onSensorChanged(SensorEvent event);//该方法监听加传感器的精度变化的,一般不需要,只需要在log中打印日志public void onAccuracyChanged(Sensor sensor, int accuracy);
然后重写onResume()
和onPause()
方法用来开启监听和注销监听
@Overrideprotected void onResume() { super.onResume(); mSensorManager.registerListener(this, mAccelerometer,SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onPause() { super.onPause(); mSensorManager.unregisterListener(this);}
重写onSensorChanged
和onAccuracyChanged
方法
@Overridepublic void onSensorChanged(SensorEvent event) { //event.values数组是传感器的各种值 Log.d("MainActivity", "value:" + event.values[0]);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) { //accuracy是精度值 Log.d("MainActivity", "accuracy:" + accuracy);}
附上加速度传感去的整篇Activity源码
package xiaoyao.vicp.mems;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;public class MainActivity extends AppCompatActivity implements SensorEventListener { private SensorManager mSensorManager; private Sensor mAccelerometer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } @Override protected void onResume() { super.onResume(); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } @Override public void onSensorChanged(SensorEvent event) { Log.d("MainActivity", "X:" + event.values[0]); Log.d("MainActivity", "Y:" + event.values[1]); Log.d("MainActivity", "Z:" + event.values[2]); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { Log.d("MainActivity", "精度:" + accuracy); }}
运行截图
- Android学习-传感器的使用
- android传感器的学习
- android 传感器的使用
- android传感器的使用
- android 传感器的使用
- Android 传感器的使用
- Android 传感器的使用
- Android 传感器的使用
- Android传感器的使用
- Android传感器的使用(方向传感器,重力传感器)
- 记android学习之路----android传感器的使用
- android中传感器的学习
- Android中传感器的使用
- android 方向传感器的使用
- android-传感器的使用
- Android 加速度传感器的使用
- android基础---->传感器的使用
- android 重力传感器的使用
- Builder构建者模式 通用模板
- 看日志
- 异常类型_异常变量的生命周期
- VI的虚拟编辑-Visual(3)
- js常见问题汇总(不定期更新)
- Android学习-传感器的使用
- op的压摆率和增益带宽积的选择
- 17 - 04 - 14 Web安全(10)
- 删除指定节点的两种方法
- 最优化学习笔记(十八)——拟牛顿法(4)DFP算法
- POJ 2251 Dungeon Master
- 基于Bootstrap的Java开发问题总结
- AngularJS最理想开发工具WebStorm
- LTE基础技术及协议帧结构