Отключить датчик отпечатков пальцев - эмулятор Android

Как отключить датчик отпечатков пальцев в эмуляторе Android? Я не смог найти никакой опции в окне настроек или в файле config.ini.

По умолчанию все эмуляторы выше SDK 23 имеют поддержку отпечатков пальцев. Я хотел бы проверить мой поток выше SDK 23 без поддержки отпечатков пальцев.

0 ответов

Обычными методами этого добиться невозможно. Хотя бывают нестандартные.

Причина, по которой вы не можете отключить, заключается в том, что его присутствие регулируется не через Android Framework, а через базовую ОС Linux, как и для всех других датчиков. Таким образом, если в вашей системе есть драйвер для этого датчика - Android будет думать, что этот датчик присутствует.

Таким образом, наличие датчика отпечатков пальцев зависит от водителя. Решение теперь простое. Если не будет водителя - не будет датчика. Все, что вам нужно сделать, это отключить (отсоединить от ОС) драйвер. Для этого вам понадобится

  • корень
  • установленная оболочка adb или какое-то терминальное приложение (su или что-то еще)

Я не совсем уверен, как драйвер отпечатка пальца отображается в системе (я делал это с другим датчиком), но после не очень долгого поиска в Google и использования экстраполяции я думаю, что его можно назвать чем-то вроде fpc.

Так что вы можете поискать это в папке системных дисков - что-то вроде/sys/bus/(platform/spi/blablabla/something)/drivers/fpc.../

В папке должно быть четыре файла - uevent, bind и те, которые нам понадобятся unbind а также deviceName.

А теперь отвяжите датчик - echo deviceName > /sys/bus/(platform/spi/blablabla/something)/drivers/fpc.../unbind

Теперь система будет думать, что в системе нет дактилоскопического датчика... до следующей перезагрузки.

Я делал это на реальном устройстве и с другим датчиком, но я думаю, что метод должен быть примерно таким же.

Вдохновение отсюда

Надеюсь, это поможет.

Нет четкого способа переопределить его в настройках эмулятора. Обходной путь - расширить 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.

Другие вопросы по тегам