Android R config_biometric_sensors默认通用定制common可好?

前面已经写过一个帖子-《Android R Setupwizard无指纹、人脸录入》发现,这个无异于开了个定制值,加入某项目中共分支不同varint有FP设备,而另外的又没有。
这时候合理做法应该是针对不同varint进行overlay。

 

如此,一旦未定制,将在三方canAuthenticate()得到反馈。

 

但是如此,定制未免太过于麻烦,一旦varient多样起来。
如果默认定制成common,有指纹呢?
会怎样?

以Settings WIFI ap share启动一次生物识别弹窗为例。

1.正常情况log。

06-21 20:34:51.533   902   902 D BiometricService: Package: com.android.settings Authenticator ID: 0 Modality: 2 Reported Modality: 2 Status: 1
06-21 20:34:51.533   902   902 D BiometricService: Creating auth session. Modality: 2, cookie: 829850487, authenticators: 33023   // //BIOMETRIC_WEAK & DEVICE_CREDENTIAL
06-21 20:34:51.534   794   820 I focaltech:hal:proxy: [ 138]:fingerprint_get_authenticator_id(dev = 0x733f63db10).
06-21 20:34:51.547   902   902 V FingerprintService: startAuthentication(com.android.settings)
06-21 20:34:51.547   902   902 V FingerprintService: Returning cookie: 829850487
06-21 20:34:51.548   902   902 D BiometricService: Matched cookie: 829850487, 0 remaining
06-21 20:34:51.548   902   902 V FingerprintService: starting client AuthenticationClientImpl(com.android.settings) targetUserId: 0 currentUserId: 0 cookie: 829850487/829850487
06-21 20:34:51.549   794   820 D android.hardware.biometrics.fingerprint@2.1-service: BiometricsFingerprint::authenticate(opid, gid)
06-21 20:34:51.549   794   820 I focaltech:hal:proxy: [ 288]:fingerprint_authenticate(dev = 0x733f63db10, operation_id = 0x0, gid = 0).
06-21 20:34:51.574   902   902 W FingerprintService: client com.android.settings is authenticating...
06-21 20:34:51.576  1127  1127 D BiometricPrompt/AuthController: showAuthenticationDialog, authenticators: 33023, biometricModality: 2, requireConfirmation: false, operationId: 0
06-21 20:34:51.607  1127  1127 D BiometricPrompt/AuthController: userId: 0 savedState: null mCurrentDialog: null newDialog: com.android.systemui.biometrics.AuthContainerView{198ed15 VFE...... .F....I. 0,0-0,0} type: 2
06-21 20:34:51.640  1127  1127 V BiometricPrompt/AuthBiometricView: newState: 1
06-21 20:34:51.661  1127  1127 V BiometricPrompt/AuthBiometricView: Current size: 0 New size: 2
06-21 20:34:51.923  1127  1127 V BiometricPrompt/AuthBiometricView: newState: 2

06-21 20:34:54.791   794   887 D android.hardware.biometrics.fingerprint@2.1-service: onAcquired(0)
06-21 20:34:54.791   794   887 D android.hardware.biometrics.fingerprint@2.1-service: onAuthenticated(fid=76553760, gid=0)
06-21 20:34:54.792   902   902 V FingerprintService: Acquired: 0 0
06-21 20:34:54.793   902   902 V BiometricStats: Authentication latency: -1
06-21 20:34:54.793   902   902 W BiometricStats: found a negative latency : -1
06-21 20:34:54.794   902   902 V FingerprintService: onAuthenticated(true), ID:76553760, Owner: com.android.settings, isBP: true, listener: com.android.server.biometrics.fingerprint.FingerprintService$BiometricPromptServiceListenerImpl@46461dc, requireConfirmation: false, user: 0
06-21 20:34:54.799   902   902 V FingerprintService: Done with client: com.android.settings
06-21 20:34:54.800   902   902 W BiometricService: Ignoring null message: 0
06-21 20:34:54.808  1127  1127 V BiometricPrompt/AuthBiometricView: newState: 6
06-21 20:34:55.196  1127  1127 D BiometricPrompt/AuthContainerView: pendingCallback: 4
06-21 20:34:55.196  1127  1127 D BiometricPrompt/AuthController: onDialogDismissed: 4
06-21 20:34:55.228   902   993 W InputDispatcher: channel '6e47b2d BiometricPrompt (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
06-21 20:34:55.229   902   993 E InputDispatcher: channel '6e47b2d BiometricPrompt (server)' ~ Channel is unrecoverably broken and will be disposed!
06-21 20:34:55.242   902  1587 W InputDispatcher: Attempted to unregister already unregistered input channel '6e47b2d BiometricPrompt (server)'

2.无HAL服务,即device manifest未声明IBiometricsFingerprint。


06-21 20:43:25.524   910   910 I SystemServerTiming: StartFingerprintSensor
06-21 20:43:25.524   910   910 I SystemServiceManager: Starting com.android.server.biometrics.fingerprint.FingerprintService
06-21 20:43:25.527   910   910 D SystemServerTiming: StartFingerprintSensor took to complete: 3ms
06-21 20:43:25.527   910   995 I SystemServerTimingAsync: InitThreadPoolExec:FingerprintService.onStart
06-21 20:43:25.527   910   995 D SystemServerInitThreadPool: Started executing FingerprintService.onStart
06-21 20:43:25.527   910   910 I SystemServerTiming: StartBiometricService
06-21 20:43:25.527   910   910 I SystemServiceManager: Starting com.android.server.biometrics.BiometricService
06-21 20:43:25.527   910   995 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:43:25.528   910   995 W FingerprintService: fingerprint HIDL not available
06-21 20:43:25.529   910   995 D SystemServerInitThreadPool: Finished executing FingerprintService.onStart
06-21 20:43:25.529   910   995 D SystemServerTimingAsync: InitThreadPoolExec:FingerprintService.onStart took to complete: 1ms
06-21 20:43:25.531   910   910 D SystemServerTiming: StartBiometricService took to complete: 4ms
06-21 20:43:25.531   910   910 I SystemServerTiming: StartAuthService
06-21 20:43:25.531   910   910 I SystemServiceManager: Starting com.android.server.biometrics.AuthService
06-21 20:43:25.531   910   910 D AuthService: Registering ID: 0 Modality: 2 Strength: 15
06-21 20:43:25.532   910   910 D FingerprintService: initConfiguredStrengthInternal(15)
06-21 20:43:25.532   910   910 D BiometricService: Registering ID: 0 Modality: 2 Strength: 15
06-21 20:43:25.532   910   910 D BiometricStrengthController: Flags are null or empty
06-21 20:43:25.533   910   910 D SystemServerTiming: StartAuthService took to complete: 2ms
06-21 20:43:25.640   910   910 I LockSettingsService: Device doesn't implement AuthSecret HAL

06-21 20:43:30.425   910  1014 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:43:30.426   910  1014 W FingerprintService: fingerprint HIDL not available
06-21 20:43:30.572   910  1013 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:43:30.573   910  1013 W FingerprintService: fingerprint HIDL not available
06-21 20:43:30.578   910  1013 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:43:30.578   910  1013 W FingerprintService: fingerprint HIDL not available
06-21 20:43:30.811   910  1013 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:43:30.811   410   410 I hwservicemanager: getTransport: Cannot find entry android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint/default in either framework or device manifest.

06-21 20:44:07.132   910  1596 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:44:07.132   410   410 I hwservicemanager: getTransport: Cannot find entry android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint/default in either framework or device manifest.
06-21 20:44:07.133   910  1596 W FingerprintService: fingerprint HIDL not available
06-21 20:44:07.704   910   924 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:44:07.706   410   410 I hwservicemanager: getTransport: Cannot find entry android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint/default in either framework or device manifest.
06-21 20:44:07.707   910   924 W FingerprintService: fingerprint HIDL not available
06-21 20:44:07.707  1412  2224 D SugstStatusProvider: Suggestion com.android.settings/com.android.settings.biometrics.fingerprint.FingerprintEnrollSuggestionActivity complete: true
06-21 20:44:16.311   910   910 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:44:16.311   410   410 I hwservicemanager: getTransport: Cannot find entry android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint/default in either framework or device manifest.

06-21 20:47:21.272   910   910 V FingerprintService: mDaemon was null, reconnect to fingerprint
06-21 20:47:21.275   410   410 I hwservicemanager: getTransport: Cannot find entry android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint/default in either framework or device manifest.
06-21 20:47:21.276   910   910 W FingerprintService: fingerprint HIDL not available
06-21 20:47:21.276   910   910 D BiometricService: Package: com.android.settings Authenticator ID: 0 Modality: 2 Reported Modality: 2 Status: 5  //BIOMETRIC_HARDWARE_NOT_DETECTED = 5;
06-21 20:47:21.276   910   910 D BiometricService: Creating auth session. Modality: 0, cookie: 1265982069, authenticators: 32768    // DEVICE_CREDENTIAL
06-21 20:47:21.278  1132  1132 D BiometricPrompt/AuthController: showAuthenticationDialog, authenticators: 32768, biometricModality: 0, requireConfirmation: false, operationId: 0
06-21 20:47:21.290  1132  1132 D BiometricPrompt/AuthController: userId: 0 savedState: null mCurrentDialog: null newDialog: com.android.systemui.biometrics.AuthContainerView{b4f9e4b VFE...... .F....I. 0,0-0,0} type: 0

3.未定制fingerprint feature,即设备运行起来,无FingerprintService。

此时,BiometricService.mAuthenticators为空。

06-21 20:50:30.241   910   910 I SystemServerTiming: StartBiometricService
06-21 20:50:30.241   910   910 I SystemServiceManager: Starting com.android.server.biometrics.BiometricService
06-21 20:50:30.244   910   910 D SystemServerTiming: StartBiometricService took to complete: 3ms
06-21 20:50:30.244   910   910 I SystemServerTiming: StartAuthService
06-21 20:50:30.244   910   910 I SystemServiceManager: Starting com.android.server.biometrics.AuthService
06-21 20:50:30.245   910   910 D AuthService: Registering ID: 0 Modality: 2 Strength: 15
06-21 20:50:30.246   910   910 E AuthService: Attempting to register with null FingerprintService. Please check your device configuration.
06-21 20:50:30.247   910   910 D SystemServerTiming: StartAuthService took to complete: 3ms
06-21 20:50:30.354   910   910 I LockSettingsService: Device doesn't implement AuthSecret HAL
06-21 20:52:15.734  2968  2999 I FeatureEligibility: com.android.settings/com.android.settings.biometrics.fingerprint.FingerprintEnrollSuggestionActivity requires unavailable feature android.hardware.fingerprint
06-21 20:52:23.863   910   910 D BiometricService: Creating auth session. Modality: 0, cookie: 1302337298, authenticators: 32768 //  DEVICE_CREDENTIAL
06-21 20:52:23.866  1133  1133 D BiometricPrompt/AuthController: showAuthenticationDialog, authenticators: 32768, biometricModality: 0, requireConfirmation: false, operationId: 0
06-21 20:52:23.888  1133  1133 D BiometricPrompt/AuthController: userId: 0 savedState: null mCurrentDialog: null newDialog: com.android.systemui.biometrics.AuthContainerView{861108a VFE...... .F....I. 0,0-0,0} type: 0
06-21 20:52:27.280   910  1598 D LockSettingsService: spBasedDoVerifyCredential: user=0 challengeType=1 hasEnrolledBiometrics=false

虽然第2、3种情况,启动的均为Pattern验证View: AuthCredentialPatternView。
情况3,和之前Android Q的行为是一致的。

 

正常情况下,在无Fp项目里边,应当既不添加fingerprint feature,也不声明device manifest IBiometricsFingerprint接口。

 

搞个R.array.config_biometric_sensors的原因,大概是因为配置中的Strength。

    /**
     * Types of authenticators, defined at a level of granularity supported by
     * {@link BiometricManager} and {@link BiometricPrompt}.
     *
     * <p>Types may combined via bitwise OR into a single integer representing multiple
     * authenticators (e.g. <code>DEVICE_CREDENTIAL | BIOMETRIC_WEAK</code>).
     */
    public interface Authenticators {
        /**
         * An {@link IntDef} representing valid combinations of authenticator types.
         * @hide
         */
        @IntDef(flag = true, value = {
                BIOMETRIC_STRONG,
                BIOMETRIC_WEAK,
                DEVICE_CREDENTIAL,
        })
        @interface Types {}

        /**
         * Empty set with no authenticators specified.
         *
         * <p>This constant is intended for use by {@link android.provider.DeviceConfig} to adjust
         * the reported strength of a biometric sensor. It is not a valid parameter for any of the
         * public {@link android.hardware.biometrics} APIs.
         *
         * @hide
         */
        @SystemApi
        @RequiresPermission(WRITE_DEVICE_CONFIG)
        int EMPTY_SET = 0x0000;

        /**
         * Placeholder for the theoretical strongest biometric security tier.
         * @hide
         */
        int BIOMETRIC_MAX_STRENGTH = 0x0001;

        /**
         * Any biometric (e.g. fingerprint, iris, or face) on the device that meets or exceeds the
         * requirements for <strong>Strong</strong>, as defined by the Android CDD.
         */
        int BIOMETRIC_STRONG = 0x000F;

        /**
         * Any biometric (e.g. fingerprint, iris, or face) on the device that meets or exceeds the
         * requirements for <strong>Weak</strong>, as defined by the Android CDD.
         *
         * <p>Note that this is a superset of {@link #BIOMETRIC_STRONG} and is defined such that
         * <code>BIOMETRIC_STRONG | BIOMETRIC_WEAK == BIOMETRIC_WEAK</code>.
         */
        int BIOMETRIC_WEAK = 0x00FF;

        /**
         * Any biometric (e.g. fingerprint, iris, or face) on the device that meets or exceeds the
         * requirements for <strong>Convenience</strong>, as defined by the Android CDD.
         *
         * <p>This constant is intended for use by {@link android.provider.DeviceConfig} to adjust
         * the reported strength of a biometric sensor. It is not a valid parameter for any of the
         * public {@link android.hardware.biometrics} APIs.
         *
         * @hide
         */
        @SystemApi
        @RequiresPermission(WRITE_DEVICE_CONFIG)
        int BIOMETRIC_CONVENIENCE = 0x0FFF;

        /**
         * Placeholder for the theoretical weakest biometric security tier.
         * @hide
         */
        int BIOMETRIC_MIN_STRENGTH = 0x7FFF;

        /**
         * The non-biometric credential used to secure the device (i.e., PIN, pattern, or password).
         * This should typically only be used in combination with a biometric auth type, such as
         * {@link #BIOMETRIC_WEAK}.
         */
        int DEVICE_CREDENTIAL = 1 << 15;
    }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值