Android中传感器Sensor的使用_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android中传感器Sensor的使用

Android中传感器Sensor的使用

 2014/9/1 23:12:11  Forsta  程序员俱乐部  我要评论(0)
  • 摘要:Android中传感器Senso的使用1.Sensor类型Android中有多种传感器,目前AndroidSDK支持的传感器有:光线传感器,旋转向量传感器,压力传感器,陀螺仪传感器,加速度传感器,重力传感器,方向传感器,磁场传感器,近程传感器等。但并不是所有手机都具有全部传感器,一般高端手机具有大多数传感器,毕竟传感器都需要money的,价格自然不菲。2.Sensor实际应用那么在Android开发中,如何使用传感器,将传感器功能添加到Android应用中呢,例如微信的摇一摇,通过加速传感器
  • 标签:android 使用

Android中传感器Senso的使用

1.Sensor类型

     Android中有多种传感器,目前Android SDK支持的传感器有:光线传感器,旋转向量传感器,压力传感器,陀螺仪传感器,加速度传感器,重力传感器,方向传感器,磁场传感器,近程传感器等。但并不是所有手机都具有全部传感器,一般高端手机具有大多数传感器,毕竟传感器都需要money的,价格自然不菲。

2.Sensor实际应用 

     那么在Android开发中,如何使用传感器,将传感器功能添加到Android应用中呢,例如微信的摇一摇,通过加速传感器,触发寻找附近的人;例如每次接听电话时,当手机靠近耳朵时,手机会黑屏,这就是光线传感器起作用。

3.Sensor使用步骤

  •       获取传感器管理对象SensorManager
  •       创建传感器事件接听器的类,该类必须实现android.hardware.SensorEventListner接口
  •       使用SensorManager.registerListener方法注册指定的传感器

4.传感器事件接口

     SensorEventListner接口,该接口的onSensorChanged()和onAccuracyChanged()方法用于处理相应的传感器事件

1 public interface SensorEventListener {
2 
3     //传感数据变化调用
4     public void onSensorChanged(SensorEvent event);
5     //传感器精准度变化时调用
6     public void onAccuracyChanged(Sensor sensor, int accuracy);    
7 }

5.简单代码实现

定义SensorManager

1 SensorManager sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);

定义一个匿名内部类或者定义一个类实现SensorEventListner接口

 1 private SensorEventListener sensorEventListener=new SensorEventListener() {
 2         
 3         @Override
 4         public void onSensorChanged(SensorEvent event) {
 5             
 6              float[] values=event.values;
 7              float x = values[0]; 
 8              float y = values[1]; 
 9              float z = values[2];     
10         }
11         @Override
12         public void onAccuracyChanged(Sensor sensor, int accuracy) {
13             
14         }
15     };

注册和关闭传感器监听事件

@Override
    protected void onResume() {
        super.onResume();
        if(sensorManager!=null){
            sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
        
        }
    }
    @Override
    protected void onPause() {
        super.onPause();
        if(sensorManager!=null){
            sensorManager.unregisterListener(sensorEventListener);
        }
    }

 

发表评论
用户名: 匿名