sensor

6698 ワード

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 Listenerインタフェースのリスニング
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);
    }
}

スクリーンキーガイドである場合にp-sensorが登録され、ロック解除後に登録が抹消されます.指紋ロック解除は明るいスクリーンであるべきです.このときps enableはpolling modeではなくGN_を定義していると判断しますMTK_BSP_PS_DYNAMIC_CALI,ps_no_need_calibarateが1に等しくないと、動的にキャリブレーションされます.システムUIのFalsingManagerでは、ユーザーがセンサを誤って遮断したことによるエラー応答など、android Nに新たに追加されたfeatureです.このプロセスはpsがwait-sleepモードかpollingかによって、明るい画面が200 ms~300 mのAccidentTouchWindowManager.javaitel_遅くなる可能性があります.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);
    }
}