美文网首页
Android (传感器)SensorManager

Android (传感器)SensorManager

作者: CrazySnow | 来源:发表于2023-04-25 16:30 被阅读0次

    SensorManager是管理传感器的类,包括传感器的创建,数据监听,以及解除监听

    步骤一:获取管理类实例

        private void initRotate() {
            mSensorMg = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        }
    

    步骤二:注册监听,并传入传感器类型

        @Override
        protected void onResume() {
            super.onResume();
            /**
             * @param 传感器监听
             * @param 需要监听的传感器实例
             * @param 感应器的敏感度
             */
            mSensorMg.registerListener(this, mSensorMg.getDefaultSensor(Sensor.TYPE_GRAVITY), SensorManager.SENSOR_DELAY_UI);
        }
    

    传感器的敏感度种类:

    • SENSOR_DELAY_FASTEST 最低延迟 0us,一般不推荐使用,该种模式可能造成手机电力大量消耗,会影响手机性能
    • SENSOR_DELAY_GAME 游戏延迟 20,000 us,一般绝大多数的实时性较高的游戏都使用该级别
    • SENSOR_DELAY_UI 界面延迟 60,000 us ,一般对于屏幕方向自动旋转使用,相对节省电能和逻辑处理,一般游戏开发中我们不使用。
    • SENSOR_DELAY_NORMAL 标准延迟 200,000 us,对于一般的简单小游戏可以使用,但过低的采样率可能对一些赛车类游戏有跳帧现象。

    步骤三:实现管理类的方法

    • onSensorChanged接收传感器的数值
    • onAccuracyChanged接收传感器的精度
       @Override
        public void onSensorChanged(SensorEvent event) {
    //业务逻辑
            if (Sensor.TYPE_GRAVITY != event.sensor.getType()) {
                return;
            }       
        }
    
        @Override
        public void onAccuracyChanged(Sensor sensor, int i) {
    
        }
    

    步骤四:解除注册

        @Override
        protected void onPause() {
            super.onPause();
            mSensorMg.unregisterListener(this);
        }
    

    补充

    SensorManager.getSensorList可获取设备支持的传感器的数量和相关

    相关文章

      网友评论

          本文标题:Android (传感器)SensorManager

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