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

Я пытаюсь использовать новую функцию в Сервисах Google Play (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 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.


person mick88    schedule 19.08.2015    source источник
comment
Где твой код? Где ваши зависимости от вашего build.gradle?   -  person Jared Burrows    schedule 19.08.2015
comment
Добавлена ​​соответствующая зависимость и код   -  person mick88    schedule 19.08.2015
comment
У меня была такая же проблема, и я решил ее, освободив место на диске на своем устройстве. Сейчас он отлично работает, но раньше он никогда не загружал зависимость.   -  person Tobias    schedule 19.08.2015
comment
Может ли кто-нибудь помочь мне с аналогичным вопросом, связанным с android-vision? stackoverflow.com/questions/32715573/   -  person muneikh    schedule 23.09.2015


Ответы (7)


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

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

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

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

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

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

person android developer    schedule 22.05.2016
comment
да, согласно примечаниям к выпуску, ошибка должна быть исправлена: developers.google.com/vision /release-notes#bug_fixes - person Wirling; 29.06.2016

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

person mick88    schedule 20.08.2015
comment
Что ж, это был ответ в моем случае, мне нужно было освободить место на моем устройстве. - person mick88; 24.08.2015
comment
У нас был один пользователь, который сообщил, что у него свободно около 890 МБ, но он все еще не загружал библиотеки. Вы помните, сколько места у вас было, когда он работал? - person Bogdan Zurac; 08.10.2015
comment
У меня была точно такая же проблема. Я даже реализовал проверку lowStorage, но она никогда не уведомляла меня о нехватке памяти. После того, как я удалил некоторые данные, и свободного места стало чуть больше 10%, он сразу же заработал/загрузил библиотеки. - person dermatthias; 12.10.2015
comment
Я не очень уверен. Но использование последней библиотеки может решить эту проблему. скомпилировать 'com.google.android.gms:play-services-vision:9.4.0+' - person Shreyash Mahajan; 18.01.2017
comment
я получаю этот путь к активу logcat '/system/framework/com.android.media.remotedisplay.jar' не существует или не содержит ресурсов. - person R.Anandan; 28.04.2017

На основе документации здесь: 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, эти файлы еще не доступны. Обычно эта загрузка выполняется во время установки приложения, но это не гарантируется. В некоторых случаях загрузка может быть отложена.

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

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

и

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

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

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

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

На основе образцов 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

person Jared Burrows    schedule 19.08.2015
comment
Да, это не совсем ответ на вопрос. Мы это уже знали. Дело в том, что многие пользователи подключены к Wi-Fi, у них куча пустого места, а библиотеки все равно отказываются скачиваться. Затем для некоторых пользователей они начинают нормально работать через несколько дней. Было бы неплохо получить более полное объяснение, желательно от Google. - person Bogdan Zurac; 08.10.2015

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

person Christian Stengel    schedule 01.09.2015
comment
сброс устройства сделал это для меня - person sschrass; 21.08.2016

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

person user5501473    schedule 29.10.2015

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

person Alécio Carvalho    schedule 29.06.2016

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

implementation 'com.google.android.gms:play-services-vision:20.1.2'
person Atef Farouk    schedule 26.09.2020