传感器

传感器的定义:

一种物理设备或者生物器官,能够探测、感受外界的信号,物理条件(如光,热, 适度)或化学组成(如烟雾),并将探知的信息传递给其他的设备或者器官!

传感器的种类:

可以从不同的角度对传感器进行划分,转换原理(传感器工作的基本物理或化学 效应);用途;输出信号以及制作材料和工艺等。一般是按工作原来来分:物理传感器与化学传感器 两类!手机上搭载的基本都是物理传感器,手机上搭载的传感器有下面这些:

  • 方向传感器(Orientation sensor)
  • 加速感应器(Accelerometer sensor)
  • 陀螺仪传感器(Gyroscope sensor)
  • 磁场传感器(Magnetic field sensor)
  • 距离传感器(Proximity sensor)
  • 光线传感器(Light sensor)
  • 气压传感器(Pressure sensor)
  • 温度传感器(Temperature sensor)
  • 重力感应器(Gravity sensor,Android 2.3引入)
  • 线性加速感应器(Linear acceleration sensor ,Android 2.3引入)
  • 旋转矢量传感器(Rotation vector sensor,Android 2.3)
  • 相对湿度传感器(Relative humidity sensor,Android 4.0)
  • 近场通信(NFC)传感器(Android 2.3引入),NFC和其他不一样,具有读写功能。

如何使用传感器

  • 获取SensorManager对象
    //获取系统的传感器管理器
    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  • 获取Sensor对象
    比如这里获取的是方向传感器,想获得什么传感器自己查API~:
    Sensor msensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
  • 注册SensorManager对象(一般在 onResume()方法中注册)
    SensorManager.registerListener(SensorEventListener listener, Sensor sensor, int samplingPeriodUs)
    示例继承了SensorEventListener接口
    sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_UI);//在交互时,对传感器进行注册
    源码中对samplingPeriodUs的四个值的解释
    /** get sensor data as fast as possible /
    public static final int SENSOR_DELAY_FASTEST = 0;//0ms
    /
    * rate suitable for games /
    public static final int SENSOR_DELAY_GAME = 1;//20ms
    /
    * rate suitable for the user interface /
    public static final int SENSOR_DELAY_UI = 2;//60ms
    /
    * rate (default) suitable for screen orientation changes */
    public static final int SENSOR_DELAY_NORMAL = 3;//200ms
  • 重现onAccuracyChanged onSensorChanged这两个方法
    @Overridepublic void onSensorChanged(SensorEvent event)
    {
    //当传感器变化时,调用很频繁,不要阻塞
    if (sensor != null && event.sensor.getType() == Sensor.TYPE_ORIENTATION) {//判断传感器类型
    float degree = -event.values[0];//反方向
    RotateAnimation rotateAnimation =
    new RotateAnimation(mStartDegree,
    degree, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    rotateAnimation.setDuration(300);//时间延时设置要谨慎
    imageView.startAnimation(rotateAnimation);
    mStartDegree = degree;
    }
    }
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    //当精度发生变化时}
  • 注销Sensor对象
    一般可以把它写到Activity或者Service的销毁方法中:
    protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(this);//一定要及时注销
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是传感器? 大家觉得什么是传感器呢? 看看手机上哪些应用使用了传感器? 比如微信中“附近的人”、“摇一摇”、游...
    兔子的眼睛阅读 1,599评论 3 2
  • 最近在搞一个自己的App,突发一个想法,给App加一个摇一摇随机查看图片的功能,这样可以使得用户在使用App的时候...
    _SOLID阅读 19,362评论 1 31
  • Android传感器定义 Android 传感器相关术语微机电传感器(MEMS)MEMS 通常制作在规格很小的硅芯...
    Jannonx阅读 10,004评论 0 1
  • chapter1 前几天跟小洁洁说:“我几乎不做梦。” 然后,梦好像不乐意了,这几天...
    懵芽阅读 1,592评论 0 0
  • 入夜的菲利普岛沿岸,滑翔着的海鸥在天边给意犹未尽的激浪伴奏,游客们三五成群,面朝大海,坐在为看企鹅归巢在滩岸专门搭...
    danny0821阅读 3,192评论 0 0