美文网首页
传感器开发

传感器开发

作者: 泰_然 | 来源:发表于2016-07-16 12:27 被阅读332次

    Android 传感器种类:

    • 光照传感器
    • 压力
    • 加速度 == 重力传感器
    • 方向
    • 陀螺仪
    • 磁极
    • 温度
    • 湿度

    获取设备上所有的传感器:
    sensorManager.getSensorList( Sensor.TYPE_ALL )

    传感器的 使用

    • 赛车游戏
    • 微信摇一摇 (加速传感器)
    • 指南针

    传感器开发关键 API

    SensorManager:
        传感器管理器
        注册、关闭 传感器
    Sensor:
        传感器 的信息
        (传感器的类型)
    SensorEventListener:
        监控 传感器变化的  监听器
    SensorEvent:
        传感器监听的 具体参数值
        .values      [ 具体的传感器值 ]
    

    传感器开发步骤:

    1. 获取   SensorManager

          传感器管理器

          getSystemService( Context.SENSOR_SERVICE )
    2. 获取   Sensor

          具体的传感器

          sensorManager.getDefaultSensor( Sensor.TYPE_LIGHT )
    3. 为传感器   注册 监听器

          sensorManager.registlistener( listener, sensor, SensorManager.速率 )

      其中:

          listener :
              实现了 SensorEventListener 接口的 子类

                  1. onSensorChanged( SensorEvent event)   监听器变化

                  2. onAccuracyChanged(Sensor sensor, int accuracy)
    4. 释放 监听器资源

       sensorManager.unregistlistener( )

    demo —— 加速度传感器

    Button button;
    TextView textView1;
    
    SensorManager sensorManager;
    Sensor sensor;
    MySensorEventListender mySensorEventListender;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
    
        setContentView(com.san.demos.R.layout.layout_main);
        button = (Button) findViewById(com.san.demos.R.id.button);
        textView1 = (TextView) findViewById(com.san.demos.R.id.textview1);
        
        // 1. sensorManager
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    
        // 2. sensor_type
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    
        // 3. registerListener()
        sensorManager.registerListener(acceleSensorEventListener, sensor,
                SensorManager.SENSOR_DELAY_UI);
    }
    
    // 加速度监听传感器
    SensorEventListener acceleSensorEventListener = new SensorEventListener() {
    
        // 监听加速度变化
        @Override
        public void onSensorChanged(SensorEvent arg0) {
            float[] values = arg0.values;
    
            StringBuilder stringBuilder = new StringBuilder("加速度分别为:\n");
    
            stringBuilder.append(" X 轴上:" + values[0] + '\n')
                    .append(" Y 轴上:" + values[1] + '\n')
                    .append(" Z 轴上:" + values[2] + '\n');
            
            textView1.setText(stringBuilder.toString());
        }
    
        @Override
        public void onAccuracyChanged(Sensor arg0, int arg1) {
            // TODO Auto-generated method stub
    
        }
    };
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
    
        // 释放传感器监听资源
        sensorManager.unregisterListener(acceleSensorEventListener);
    }

    相关文章

      网友评论

          本文标题:传感器开发

          本文链接:https://www.haomeiwen.com/subject/urskjttx.html