美文网首页
传感器思密达

传感器思密达

作者: 兔子的眼睛 | 来源:发表于2016-09-18 21:37 被阅读0次

什么是传感器?

  • 大家觉得什么是传感器呢?
  • 看看手机上哪些应用使用了传感器?
  • 比如微信中“附近的人”、“摇一摇”、游戏“神庙逃亡”、“狂野飙车”等等
  • 它们可以做什么?
    • 温度、压力、湿度、光线?
  • 传感器能让你的手机实现各种功能,比如知道你如何拿手机、知道当前光亮度自动调整亮度、知道当前音量、压力等等,那么你知道你的Android手机上都有哪些传感器并且能够读出数据吗?

常用的传感器有哪些?

  • 在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用
  • SENSOR_TYPE_ACCELEROMETER //加速度
  • SENSOR_TYPE_MAGNETIC_FIELD //磁力
  • SENSOR_TYPE_ORIENTATION //方向
  • SENSOR_TYPE_GYROSCOPE //陀螺仪
  • SENSOR_TYPE_LIGHT //光线感应
  • SENSOR_TYPE_PRESSURE //压力
  • SENSOR_TYPE_TEMPRATURE //温度
  • SENSOR_TYPE_PROXIMITY //接近
  • SENSOR_TYPE_GRAVITY //重力
  • SENSOR_TYPE_LINEAR_ACCELERATION //线性加速度
  • SENSOR_TYPE_ROTATION_VECTOR //旋转矢量

如何使用这些传感器?

  • 获取SensorManager对象
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  • 获取Sensor对象

mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

- 注册Sensor对象

//注册
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_UI);
}

- 重写onAccuracyChanged, onSensorChanged这两个方法

//重写
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION){
float degree = -sensorEvent.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 i) {
}

}

- 注销Sensor对象

//注销
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}


###使用传感器的注意事项
- 并非所有手机都支持所有传感器
 - 大部分手持设备和桌面设备都带有加速度和磁力传感器,但带气压计和温度计的设备就少的多了。而且,在一台设备上某类传感器的数量也可以有多个。比如,一台设备可以带有两个重力传感器,每个传感器的量程各不相同。
- 不同的系统版本引入的传感器是不同的
 - 比如,很多传感器是自Android1.5(API Level 3)开始引入的,但其中有些并未实现而直至Android2.3(API Level 9)和Android4.0(API Level 14)才引入的。有两个传感器已过时,被更新更好的传感器所替代。

###针对是否有传感功能优化
- 在运行时检测传感器
 - `if(mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION)!=null){//Success!There's a pressure sensor.}`
 - `else`
 - `{//传感器不存在。}`
- 用Android Market过滤器来限定目标设备必须带有指定的传感器配置
 - `<uses-feature
      android:name="android.hardware.sensor.accelerometer"
      android:required="true"/>`

###使用注意事项
- 别忘记注销
- 不要在模拟器上测试你的代码
- 不要阻塞`onSensorChanged()`方法
- 避免使用过时的方法或传感器类型
- 在使用前先验证传感器
- 谨慎选择传感器延时

相关文章

  • 传感器思密达

    什么是传感器? 大家觉得什么是传感器呢? 看看手机上哪些应用使用了传感器? 比如微信中“附近的人”、“摇一摇”、游...

  • 思密达

    唐棣之华,偏其反而。 岂不尔思,室是远而。 子曰:“未之思也,...

  • 你好,思密达

    你好,思密达 你在干嘛思密达 你吃饭了嘛,思密达 哈哈哈哈哈哈哈哈哈 ​在还学习韩语之前很多同学应该都听过“思密达...

  • 首尔,你好

    ❤思密达我们到了

  • 思密达(诗)

    文图/一诺余生 我刚来这座城市的时候, 满耳都是思密达。 看着那些文字还有壁画, 想着发出此音的那朵金达莱花。 时...

  • 老叶牌课堂又开课啦~

    这次,葱油饼思密达

  • 哩呢哪哦 思密达

    哩呢哪哦 思密达

  • Android 传感器开发详解

    Android 传感器开发详解 传感器 传感器的分类 方向传感器 陀螺仪传感器 磁场传感器 重力传感器 线性加速度...

  • android高级进阶

    传感器的使用传感器在手机上应用很广泛,有方向传感器, 加速传感器,重力传感器, 光线传感器,陀螺仪传感器, 压力传...

  • Android手机传感器的简单介绍

    Android手机传感器的使用 1、传感器的分类 动作传感器:加速度传感器、重力传感器、陀螺仪等位置传感器:方向传...

网友评论

      本文标题:传感器思密达

      本文链接:https://www.haomeiwen.com/subject/xohgettx.html