大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Android技巧 > Android开发之Sensor传感器

Android开发之Sensor传感器

关键词:传感器AndroidSensor  阅读(769) 赞(19)

[摘要]本文是对Android开发之Sensor传感器的讲解,对学习Android编程技术有所帮助,与大家分享。

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



相关评论