zoukankan      html  css  js  c++  java
  • Android传感器开发

    2013-07-02

    Android 中传感器的种类

    加速度,Sensor.TYPE_ACCELEROMETER

    陀螺仪,Sensor.TYPE_GYROSCOPE

    亮度,Sensor.TYPE_LIGHT

    地磁,Sensor.TYPE_MAGNETIC_FIELD

    方向,Sensor.TYPE_ORIENTATION

    压力,Sensor.TYPE_PRESSURE

    近程,Sensor.TYPE_PROXIMITY

    温度,Sensor.TYPE_TEMPERATURE

    Android 中传感器的功能

    SensorManager 是所有传感器的一个综合管理类,包括了传感器的种类、采样率、精准度等。

    // 得到一个SensorManager对象

    SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

    // 得到传感器列表

    List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);

    // 注册传感器

    boolean result = mSensorManager.registerListener(this, sensors, SensorManager.SENSOR_DELAY_FASTEST);

    // 卸载传感器

    mSensorManager.unregisterListener(this);

    // SensorEventListener有两个接口方法

    // 在传感器值更改时调用

    onSensorChanged(SensorEvent event);

    // SensorEvent 对象包括一组浮点数

    float x = event.values[SensorManager.DATA_X];

    float y = event.values[SensorManager.DATA_Y];

    float z = event.values[SensorManager.DATA_Z];

    // 在传感器的精准度发生改变时调用

    // 参数accuracy表示传感器新的准确值

    onAccuracyChanged(Sensor sensor, int accuracy);

    示例:

    public class SensorActivity extends Activity implements SensorEventListener {

      private boolean mRegisteredSensor;

      private SensorManager mSensorManager;

      public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mRegisteredSensor = false;

        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

      }

      protected void onResume() {

        super.onResume();

        List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);

        if(sensors.size() > 0) {

          mRegisteredSensor = mSensorManager.registerListener(this, sensors.get(0), SensorManager.SENSOR_DELAY_FASTEST);

        }

      }

      protected void onPause() {

        if(mRegisteredSensor){

          mSensorManager.unregisterListener(this);

          mRegisteredSensor = false;

        }

        super.onPause();

      }

      public void onAccuracyChanged(Sensor sensor, int accuracy) {

       

      }

      public void onSensorChanged(SensorEvent event) {

        if(event.sensor.getType() == Sensor.TYPE_ORIENTATION) {

          float x = event.values[SensorManager.DATA_X];

          float y = event.values[SensorManager.DATA_Y];

          float z = event.values[SensorManager.DATA_Z];

        }

      }

    }

    SensorManager 常用方法

    getDefaultSensor, 得到默认的传感器对象

    getInclination, 得到地磁传感器倾斜角的弧度数

    getOrientation, 得到设备旋转的方向

    getSensorList, 得到指定传感器的列表

  • 相关阅读:
    21322
    9-1
    作业五1
    作业五2
    实验9-2
    作业4函数应用
    实验九 1
    实验八 数组2 输出一张九九乘法口诀表。要求必须将乘积放入一个二维数组中,再输出该数组,程序运行效果如下
    实验八 (调试)
    实验6剩余部分
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3168678.html
Copyright © 2011-2022 走看看