Библиотека штрих-кодов 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,

6 ответов

Решение

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

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

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

Это также написано в некоторых проблемах, описанных в репозитории Google github:

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

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

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

На основе документации здесь: 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

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

public boolean isOperational()

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

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

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

Возвращает • true, если детектор работает, и false, если идет загрузка зависимостей

а также

публичный логический детектор IsOperational()

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

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

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

Основано на Google Samples(комментарий в источнике):

        // 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

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

В сентябре 2020 г.: в этой версии:

implementation 'com.google.android.gms:play-services-vision:20.1.2'

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

Операция Mobile Vision восстановлена ​​в Службах Google Play версии 9.2 https://developers.google.com/vision/release-notes

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

Вот обновления для Mobile Vision API, соответствующие релизам Сервисов Google Play.

Сервисы Google Play 9.2

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

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

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