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); } }