Библиотека штрих-кода Google Vision не найдена

Я пытаюсь использовать новую функцию в Google Play Services (Vision), чтобы добавить сканирование QR-кода в мое приложение. Но когда я запускаю свое приложение, я получаю следующее:

I/Vision﹕ Supported ABIS: [armeabi-v7a, armeabi]
D/Vision﹕ Library not found: /data/data/com.google.android.gms/files/com.google.android.gms.vision/barcode/libs/armeabi-v7a/libbarhopper.so
I/Vision﹕ Requesting barcode detector download.

Я объявлял зависимость от штрих-кода в соответствии с учебным пособием:

<meta-data
    android:name="com.google.android.gms.vision.DEPENDENCIES"
    android:value="barcode" />

Я попытался переустановить приложение и перезапустить телефон, ничего не помогает.

Использование Google Play Services 7.8, версия, установленная на устройстве, - 7.8.11.

compile 'com.google.android.gms:play-services-vision:7.8.0'

Код, используемый для создания детектора штрихового кода:

boolean initBarcodeDetector() {
    final BarcodeTrackerFactory barcodeTrackerFactory = new BarcodeTrackerFactory(this);
    final MultiProcessor<Barcode> multiProcessor = new MultiProcessor.Builder<>(barcodeTrackerFactory)
            .build();
    barcodeDetector = new BarcodeDetector.Builder(this)
            .build();
    barcodeDetector.setProcessor(multiProcessor);

    if (barcodeDetector.isOperational() == false) {
        Toast.makeText(this, R.string.barcode_not_operational, Toast.LENGTH_LONG).show();
        finish();
        return false;
    }

    return true;
}

приведенное выше закрытие возвращает false и завершает действие, потому что barcodeDetector.isOperational() возвращает false.

Ответ 1

Он начал работать после того, как я очистил кеш и освободил место. У меня было только "400 МБ свободного места", и не было сообщения об ошибке, которое указывало бы на это.

Ответ 2

Google подтвердила ошибку, которую они исправят в ближайшее время, что в некоторых случаях не позволяет использовать эту библиотеку штрих-кода/распознавания лиц (ссылка здесь):

  • Услуга, требуемая Mobile Vision, теперь отключена из-за серьезной ошибки в этой службе. Это предотвратит пользователей, которые не уже используемое распознавание лица или штрих-кода от использования этих функций. Мы не рекомендуется добавлять новые приложения Mobile Vision в ваше приложение до тех пор, пока эта проблема исправлена.
  • Для приложений, которые уже используют функции Mobile Vision, проверьте FaceDetector.isOperational() или BarcodeDetector.isOperational() на подтвердите готовность детектора перед использованием детектора лица или штрих-кода.

Он также написан в некоторых вопросах, описанных в репозитории Google github sample:

https://github.com/googlesamples/android-vision/issues

Пример ( здесь):

Известная проблема с новой версией GMSCore (v9), которая была только что выпущенный сегодня.

Ответ 3

Основываясь на документации здесь: https://developers.google.com/android/reference/com/google/android/gms/vision/package-summary и здесь: https://developers.google.com/android/reference/com/google/android/gms/vision/Detector#isOperational()

Документация:

public boolean isOperational()

Указывает, имеет ли детектор все необходимые зависимости доступный локально для обнаружения.

Когда приложение впервые установлено, возможно, потребуется скачать требуемые файлы. Если это возвращает false, эти файлы еще не установлены доступный. Обычно эту загрузку позаботятся по заявке время установки, но это не гарантируется. В некоторых случаях загрузка возможно, были отложены.

Если ваш код добавил процессор, индикация детектора рабочее состояние также указывается с помощью детектораIsOational() метод. Вы можете проверить это в своем приложении, поскольку он обрабатывает обнаружение результатов и может передать это состояние пользователю, если это необходимо.

Возвращает • true, если детектор работает, false, если зависимость загрузка продолжается.

и

public boolean detectorIsOperational()

Возвращает true, если детектор работает, false, если он не является в рабочем состоянии. В нерабочем случае детектор не вернет Результаты.

Детектор может быть нерабочим некоторое время при запуске приложения для в первый раз, если требуется загрузка для получения библиотеки и файлов моделей, необходимых для обнаружения.

Похоже, ваше устройство должно завершить загрузку библиотек через Google Play Services, чтобы ваше приложение сразу работало.

На основе образцов Google (комментарий в источнике):

        // Note: The first time that an app using the barcode or face API is installed on a
        // device, GMS will download a native libraries to the device in order to do detection.
        // Usually this completes before the app is run for the first time.  But if that
        // download has not yet completed, then the above call will not detect any barcodes
        // and/or faces.
        //
        // isOperational() can be used to check if the required native libraries are currently
        // available.  The detectors will automatically become operational once the library
        // downloads complete on device.

https://github.com/googlesamples/android-vision/blob/master/visionSamples/multi-tracker/app/src/main/java/com/google/android/gms/samples/vision/face/multitracker/MultiTrackerActivity.java#L156

Ответ 4

Я также испытал это, библиотека видения не была найдена на одном из моих тестовых устройств, хотя консоль показывала запрос библиотеки на каждом запуске приложения, но никогда не заканчивалась. Я тестировал на Nexus 4,5 Motorola X2, Samsung S 2-6 и других устройствах, S5 был единственным устройством с Проблемой. Было достаточно свободного места с более чем 2 ГБ, после жесткой перезагрузки устройства сканирование работало мгновенно по назначению.

Ответ 5

У меня тоже был такой же опыт. (извините, я не могу комментировать, чтобы добавить свое дело, потому что у меня только 1 репутация) Я использую Nexus 5 (2013) с зефиром (6.0). Я начал с 1 ГБ свободного места и не работал и не работал со скоростью 2 ГБ. Я закончил тем, что освободил еще 1 гб (так что 3 ГБ свободного места), тогда он работал.

Ответ 6

Операция Mobile Vision восстанавливается в Google Play Services v9.2 https://developers.google.com/vision/release-notes#google_play_services_92

Примечания к выпуску

Ниже приведены обновления API Mobile Vision, соответствующие Службы Google Play.

Службы Google Play 9.2

Исправления ошибок

Операция Mobile Vision восстанавливается в Службах Google Play v9.2. Пользователи с новой версией смогут загрузить необходимые файлы и использовать функции приложения, поддерживаемые Mobile Vision. Обновление Google Play Services также включает обновление конфигурации как часть исправления для Mobile Vision. Обычно это обновляется один раз несколько дней, но это также произойдет при перезагрузке телефона (хотя это дросселируется, поэтому это не гарантирует обновление конфигурации). Поскольку ошибки загрузки файлов все равно могут возникать (например, если есть недостаточное хранение на устройстве), мы рекомендуем Google Play Services разработчикам вызывать FaceDetector.isOperational() или BarcodeDetector.isOperational() для проверки готовности детектора и соответственно.