web-dev-qa-db-ja.com

指紋センサーを無効にする-Androidエミュレーター

Androidエミュレーターで指紋センサーを無効にする方法?設定ウィンドウまたはconfig.iniファイルにオプションが見つかりませんでした。

デフォルトでは、SDK23より上のすべてのエミュレーターはフィンガープリントをサポートしています。指紋をサポートせずに、上記のSDK23でフローをテストしたいと思います。

23

従来の方法では達成できません。しかし、型にはまらないものがあります。

無効にできない理由は、その存在がAndroidフレームワークではなく、他のすべてのセンサーと同様にLinux OSのアンダーレイを介して規制されているためです。したがって、システムにこのセンサーのドライバーがある場合-Androidは、このセンサーが存在すると見なします。

したがって、指紋センサーの存在はドライバーに依存します。解決策は簡単です。ドライバーが存在しない場合、センサーは存在しません。あなたがしなければならないのは、ドライバを無効にする(OSから切断する)ことだけです。そのためにはあなたが必要になります

  • root
  • adb Shellまたはインストールされているターミナルアプリ(suなど)

指紋ドライバーがシステムでどのように表現されているかは完全にはわかりませんが(他のセンサーで行っていました)、それほど長くグーグルして外挿を使用した後は、fpcのようなものと呼ばれる可能性があります

したがって、システムドライブフォルダでこれを検索することをお勧めします-/sys/bus/(platform/spi/blablabla/something)/drivers/fpc.../のようなもの

フォルダには、ueventbindの4つのファイルがあり、unbinddeviceNameが必要です。

そして、センサーのバインドを解除します-echo deviceName > /sys/bus/(platform/spi/blablabla/something)/drivers/fpc.../unbind

これで、システムはシステムに指紋センサーがないと見なします...次の再起動まで。

私は実際のデバイスと他のセンサーでこれを行っていましたが、方法はほとんど同じであるはずだと思います。

ここ からのインスピレーション

それが役に立てば幸い。

3
Paul Ost

エミュレーター設定でそれをオーバーライドする明確な方法はありません。回避策は、 BiometricPrompt (API 28+)または FingerprintManagerCompat (27以下)のいずれかを拡張し、独自の実装を提供することです。 FingerprintManagerCompatの拡張機能の場合、isHardwareDetected()を次のようにオーバーライドします。

    override fun isHardwareDetected() {
          if (System.getProperty("os.Arch") == "mips64") {
                return false;
          } 
          return super.isHardwareDetected()
    }

BiometricPromptの場合、同様の方法でBiometricPrompt.authenticate()をオーバーライドして、定数BIOMETRIC_ERROR_HW_UNAVAILABLEを返します。

2