web-dev-qa-db-fra.com

Bibliothèque de codes à barres Google Vision introuvable

J'essaie d'utiliser la nouvelle fonctionnalité des services Google Play (Vision) pour ajouter la numérisation de code QR à mon application. Mais quand je lance mon application, je reçois ceci:

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.

J'ai déclaré la dépendance au code à barres selon le tutoriel: 

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

J'ai essayé de réinstaller l'application et de redémarrer le téléphone, rien n'y fait.

À l'aide de Google Play Services 7.8, la version installée sur l'appareil est la 7.8.11.

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

Code utilisé pour créer le détecteur de code à barres:

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;
}

la fermeture ci-dessus renvoie false et termine l'activité car barcodeDetector.isOperational() renvoie false.

13
mick88

Il a commencé à fonctionner après avoir vidé le cache et libéré de l'espace. J'avais "seulement" 400 Mo d'espace libre et il n'y avait aucun message d'erreur qui l'indiquerait.

6
mick88

Google a confirmé un bogue qu’ils corrigeront bientôt, ce qui vous empêche dans certains cas d’utiliser cette bibliothèque de codes à barres/détection de visages (lien ici ):

  • Un service requis par Mobile Vision est maintenant désactivé en raison d'un grave problème rencontré dans ce service. Cela empêchera les utilisateurs qui n'en ont pas déjà utilisé la détection de visage ou de code à barres d’utiliser ces fonctions. Nous ne recommande pas d'ajouter de nouvelles fonctionnalités de Mobile Vision à votre application avant le ce problème est résolu.
  • Pour les applications qui utilisent déjà les fonctionnalités de Mobile Vision, cochez FaceDetector.isOperational () ou BarcodeDetector.isOperational () sur Confirmez que le détecteur est prêt avant d'utiliser le détecteur de visage ou le code à barres.

Il est également écrit dans certains numéros publiés dans l'exemple de rapport de dépôt de github de Google:

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

Exemple ( ici ):

Il existe un problème connu avec la nouvelle version de GMSCore (v9), à savoir vient de sortir aujourd'hui.

9

Basé sur la documentation ici:https://developers.google.com/Android/reference/com/google/Android/gms/vision/package-summaryet ici:https://developers.google.com/Android/reference/com/google/Android/gms/vision/Detector#isOperational ()

Documentation:

public boolean isOperational () 

Indique si le détecteur possède toutes les dépendances requises disponible localement afin de faire la détection.

Quand une application est installée pour la première fois, il peut être nécessaire de télécharger fichiers requis. Si cela retourne false, ces fichiers ne sont pas encore disponible. Habituellement, ce téléchargement est pris en charge lors de l'application temps d'installation, mais ce n'est pas garanti. Dans certains cas, le téléchargement peut avoir été retardé. 

Si votre code a ajouté un processeur, une indication du détecteur L’état opérationnel est également indiqué par le paramètre detectIsOperational () méthode. Vous pouvez vérifier cela dans votre application pendant le traitement de la détection résultats, et peut transmettre cet état à l'utilisateur le cas échéant.

Renvoie • true si le détecteur est opérationnel, false si la dépendance le téléchargement est en cours

et

public boolean detectIsOperational () 

Renvoie vrai si le détecteur est opérationnel, faux si ce n'est pas le cas opérationnel. Dans le cas non opérationnel, le détecteur renverra n ° __. résultats.

Un détecteur peut ne pas être opérationnel pendant un certain temps lors du démarrage d'une application pour la première fois, si un téléchargement est nécessaire pour obtenir le fichier .__ associé. bibliothèque et fichiers de modèle nécessaires à la détection.

Il semble que votre appareil doive terminer le téléchargement des bibliothèques par le biais des services Google Play pour que votre application fonctionne immédiatement.

Basé sur les exemples Google (un commentaire dans la source):

        // 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/Ambrement/samples/vision/face/multitracker/ MultiTrackerActivity.Java # L156

3
Jared Burrows

J'ai également constaté que la bibliothèque de vision ne pouvait pas être trouvée sur l'un de mes dispositifs de test, bien que la console affiche une requête de la bibliothèque à chaque démarrage de l'application, mais ne se termine jamais. J'ai testé sur le Nexus 4,5 Motorola X2, le Samsung S 2-6 et divers autres appareils, le S5 étant le seul à présenter le problème. Avec plus de 2 Go, l’espace disponible était suffisant. Après une réinitialisation complète du périphérique, la numérisation a fonctionné instantanément comme prévu. 

3
Christian Stengel

J'ai aussi eu la même expérience… .. (désolé, je ne peux pas commenter, je n'ai qu'un représentant). 1 Go d'espace libre et ne fonctionnait pas et ne fonctionnait pas à 2 Go .

1
user5501473

L'opération Mobile Vision est restaurée dans les services Google Play version 9.2 https://developers.google.com/vision/release-notes#google_play_services_92

Notes de version

Voici les mises à jour de l'API Mobile Vision, correspondant au fichier Versions des services Google Play.

Services Google Play 9.2

Corrections de bugs

Le fonctionnement de Mobile Vision est restauré dans les services Google Play v9.2 . Les utilisateurs avec la nouvelle version pourront télécharger les fichiers requis et utilisez les fonctionnalités de l'application optimisées par Mobile Vision. Le La mise à jour des services Google Play comprend également une mise à jour de la configuration en tant que une partie du correctif pour Mobile Vision. Normalement, ceci est mis à jour une fois par plusieurs jours, mais cela se produira également au redémarrage du téléphone (bien que cela soit étranglé, la mise à jour de la configuration n’est donc pas garantie) . Étant donné que des erreurs de téléchargement de fichier peuvent toujours se produire (par exemple, si L'espace de stockage sur le périphérique est insuffisant), nous conseillons les services Google Play Les développeurs doivent appeler FaceDetector.isOperational () ou BarcodeDetector.isOperational () pour vérifier la disponibilité du détecteur et dégrader le fonctionnement des fonctionnalités en conséquence.

0
Alécio Carvalho