Android学习之教你五步搞定Sensor,让程序更酷

首先介绍下,啥叫传感器。

Sensor(传感器): 维基百科告诉我:传感器是接收信号或刺激并反应的器件,能将待测物理量或化学量转换成另一对应输出的装置。

比如:重力传感器,方向传感器

Android对每个设备的传感器都进行了抽象,SensorManger类用来控制传感器,Sensor用来描述具体的传感器,SensorEventListener用来监听传感器值的改变。

进入主题:

 

只需要五步,你就能搞定Sensor。让你的程序变的更酷。

 

[java]  view plain copy
  1. //第一步:获得SensorManager对象,返回的就是一个硬件设备的控制器  
  2. SensorManager sensorManager = (SensorManager)getSystemService(SERVICE_NAME);  
  3. //第二步:获得特定的传感器  
  4. Sensor accelerSensor = sensorManager.getDefaultSensor(Sensor. TYPE_ACCELEROMETER);  
  5. //第三步:创建SensorEventListener监听传感器的值改变并且做出相应的动作  
  6. SensorEventListener mySensorListener = new SensorEventListener() {  
  7.  //传感器的值改变调用此方法  
  8.         @Override  
  9.         public void onSensorChanged(SensorEvent event) {  
  10.             float x = event.values[0];  
  11.             float y = event.values[1];  
  12.             float z = event.values[2];         
  13.             //获得值之后,你就可以进行相应的处理啦  
  14.             System.out.println("~~~X is :"+x);  
  15.             System.out.println("---Y is :"+y);  
  16.             System.out.println("+++Z is :"+z);  
  17.         }  
  18.         //传感器的精确度改变调用此方法  
  19.         @Override  
  20.         public void onAccuracyChanged(Sensor sensor, int accuracy) {  
  21.         }  
  22. }  
  23. //第四步:注册传感器事件监听事件  
  24.      sensorManager.registerListener(mySensorListener, accelerSensor, SensorManager.SENSOR_DELAY_NORMAL);  
  25. //第五步:注销传感器事件的监听  
  26.      sensorManager.unregisterListener(mySensorListener);  
 
补充:

 

第二步中可以获得如下传感器,

 

传感器类型列表:

Sensor.TYPE_ACCELEROMETER:

         加速计传感器

Sensor.TYPE_GYROSCOPE:

         回转仪传感器

Sensor.TYPE_LIGHT:

         光传感器,动态控制屏幕亮度

Sensor.TYPE_MAGNETIC_FIELD:

         磁场传感器

Sensor.TYPE_ORIENTATION:

         方向传感器

Sensor.TYPE_PRESSURE:

        压力传感器

Sensor.TYPE_PROXIMIY:

         邻近距离传感器

Sensor.TYPE_TEMPERATURE:

         温度传感器

 

有些手机不支持部分感应装置你可以判断sensor是否为null,为null时你可以提示用户。


你也可以使用下面的语句获得设备可用的的传感器列表:

List<Sensor> allSensors = sensorManger.getSensorList(Sensor.TYPE_ALL);

 

在第三步中,

    三个参数分别为:SensorEventListener、Sensor、传感器的更新速率

 

前两个参数都是之前声明的。

 

第三个参数,有四个选择。

传感器更新速率:

SensorManager.SENSOR_DELAY_FASTEST:

         指定可能最快的传感器更新速率

 

SensorManager.SENSOR_DELAY_GAME:

         指定适合在游戏中使用的更新速率

 

SensorManager.SENSOR_DELAY_NORMAL:

         指定默认的更新速率

 

SensorManager.SENSOR_DELAY_UI:

         指定适合于更新UI的更新速率

 

 

第四步一般是在onResume()中进行。

 

第五步一般在onPause()中进行。

这样Activity是和用户交互时才使用它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值