frameworks\base\core\java\android\hardware\Sensor.java

sensor 的对象

frameworks\base\core\java\android\hardware\SensorEvent.java

sensor上发的事件对象,包含sensor信息

frameworks\base\core\java\android\hardware\SensorEventListener.java

监听SensorEvent监听器接口

frameworks\base\core\java\android\hardware\SensorManager.java

用于sensor 注册与取消注册抽象类

frameworks\base\core\java\android\hardware\LegacySensorManager.java

与厂商相关sensor管理类

frameworks\base\core\java\android\hardware\SystemSensorManager.java

实现SensorManager是sensor及事件管理实现

SensorManager-》LegacySensorManager-》SystemSensorManager实现sensor管理


frameworks\base\services\core\java\com\android\server\SensorNotificationService.java

是一个系统服务,实现SensorEventListener,用于监听事件并发送通知

frameworks\base\core\java\com\android\internal\os\SensorPowerCalculator.java


frameworks\base\services\core\java\com\mediatek\sensorhub\SensorHubService.java



解锁码亮屏慢

frameworks\base\packages\SystemUI\src\com\android\systemui\classifier\FalsingManager.java

private void sessionExitpoint(boolean force) {    if (mSessionActive && (force || !shouldSessionBeActive())) {        mSessionActive = false;        mSensorManager.unregisterListener(this);    }}private void onSessionStart() {    if (FalsingLog.ENABLED) {        FalsingLog.i("onSessionStart", "classifierEnabled=" + isClassiferEnabled());    }    mBouncerOn = false;    mSessionActive = true;    if (mHumanInteractionClassifier.isEnabled()) {        registerSensors(CLASSIFIER_SENSORS);    }    if (mDataCollector.isEnabled()) {        registerSensors(COLLECTOR_SENSORS);    }}

根据是锁屏keyguard 时会注册p-sensor,解锁后会注销注册,由于指纹解锁应该是亮屏的。这个时候判断ps enable,不是polling mode,而且定义了GN_MTK_BSP_PS_DYNAMIC_CALI,ps_no_need_calibarate不等于1,就会动态校准。
是android N新加的feature,在SystemUI的FalsingManager中,其中之一是通过具体感应器来监测数据, 来做容错处理,比如说用户不小心挡住传感器而导致的一些错误响应等。
这个过程根据ps 是wait-sleep模式还是polling ,可能会导致亮屏慢200ms~300ms
AccidentTouchWindowManager.java
itel_mistaken_touching_proof 用来控制智能辅助功能


public boolean isOpen() {  return observer.value == 1;//equals to itel_mistaken_touching_proof}public void onScreenTurnedOff() {    Log.d(TAG, "onScreenTurnedOff observer.value : " + observer.value);    if (observer.value == 1 && !isRegisterSensor) {        Log.d(TAG, "onScreenTurnedOff sensor register success");        isRegisterSensor = true;        mSensorManager.registerListener(this,mProximitySensor, SensorManager.SENSOR_DELAY_NORMAL);    }    accidentWindowDismiss();}public void onScreenTurnedOn() {    Log.d(TAG, "onScreenTurnedOn isSensorShow : " +isSensorShow+" isProximity: "+isProximity+" mHallState "+mHallState);    if (isSensorShow && isProximity && (mHallState == 0)) {        accidentWindowShow();    } else if (isRegisterSensor) {        isRegisterSensor = false;        mSensorManager.unregisterListener(this);    }}

更多相关文章

  1. android inputmanager中事件的传递流程
  2. Android解析json数组对象
  3. android ListView嵌套checkbox并取代checkbox点击事件
  4. EventBus 《三》 事件的具体用法及其讲解
  5. Android事件处理分析+Android事件处理 +Android输入事件流程
  6. (一)Android事件分发机制 - View篇
  7. Android事件分发/传递机制总结
  8. Android中的Parcel机制 实现Bundle传递对象
  9. Android事件分发机制 详解攻略

随机推荐

  1. 怎样实现用一条sql语句同时插入多行数据?
  2. 比较mysql中的两个逗号分隔值并获取匹配
  3. Oracle配置PL/SQL Developer连接数据库
  4. JDBC_mysql---防sql注入,存储图片
  5. Mybatis的动态sql详解,区别于传统的sql拼
  6. 创建56个民族的sql语句
  7. SQL恢复XP_CMDSHLL 以及XPLOG70.DLL被删
  8. 使用带有派生列的SQL排名函数
  9. vs2012连接sql2012,SQLDriverConnect问题
  10. MySQL数据查询之单表查询