Android -- Sensor传感器

Sensor创建步骤                                                                         

  • 获取系统服务(SENSOR_SERVICE)返回一个SensorManager 对象
sensormanager = (SensorManager)getSystemSeriver(SENSOR_SERVICE);
  • 通过SensorManager对象获取相应的Sensor类型的对象
    sensorObject = sensormanager.getDefaultSensor(sensor Type);
  • 声明一个SensorEventListener 对象用于侦听Sensor 事件,并重载onSensorChanged方法
SensorEventListener sensorListener = new SensorEventListener(){      };
  • 注册相应的SensorService
sensormanager.registerListener(sensorListener, sensorObject, Sensor TYPE);
  • 销毁相应的SensorService
    sensormanager.unregisterListener(sensorListener, sensorObject);

传感器类型                                                                                  

int  TYPE_ACCELEROMETER   A constant describing an accelerometer sensor type. //三轴加速度感应器 返回三个坐标轴的加速度  单位m/s2

int  TYPE_ALL  A constant describing all sensor types. //用于列出所有感应器

int  TYPE_GRAVITY  A constant describing a gravity sensor type.  //重力感应器

int  TYPE_GYROSCOPE  A constant describing a gyroscope sensor type //陀螺仪 可判断方向 返回三个坐标轴上的角度

int  TYPE_LIGHT  A constant describing an light sensor type.  //光线感应器 单位 lux 勒克斯

int  TYPE_LINEAR_ACCELERATION  A constant describing a linear acceleration sensor type. //线性加速度

int TYPE_MAGNETIC_FIELD  A constant describing a magnetic field sensor type.//磁场感应 返回三个坐标轴的数值  微特斯拉

int TYPE_ORIENTATION  This constant is deprecated. use SensorManager.getOrientation() instead. //方向感应器 已过时 可以使用方法获得

int  TYPE_PRESSURE   A constant describing a pressure sensor type //压力感应器  单位 千帕斯卡

int TYPE_PROXIMITY   A constant describing an proximity sensor type.//距离传感器

int   TYPE_ROTATION_VECTOR   A constant describing a rotation vector sensor type.//翻转传感器

int   TYPE_TEMPERATURE  A constant describing a temperature sensor type //温度传感器 单位 摄氏度

程序代码                                                                                   

public class MainActivity extends Activity {

    private SensorManager sm;
    private MyListener listener;
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        sm = (SensorManager) getSystemService(SENSOR_SERVICE);
        // 方向
        // Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        // 光线
        Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
        listener = new MyListener();
        sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);
    }

    private class MyListener implements SensorEventListener {

        @Override
        public void onSensorChanged(SensorEvent event) {
            float[] values = event.values;
            float angle = values[0];
            // System.out.println("与正北的角度:"+angle);
            // tv.setText("与正北的角度:"+angle);
            System.out.println("光照强度:" + angle);
            tv.setText("光照强度:" + angle);
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            // TODO 自动生成的方法存根

        }

    }

    @Override
    protected void onDestroy() {
        sm.unregisterListener(listener);
        listener = null;
        super.onDestroy();
    }

}

我是天王盖地虎的分割线                                                                

源代码:http://pan.baidu.com/s/1dD1Qx01

传感器.zip

转载请注明出处:http://www.cnblogs.com/yydcdut

原文地址:https://www.cnblogs.com/yydcdut/p/3829973.html