Google Play開発者サービス(ビジョン)の新機能を使用して、アプリケーションに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;
}
_
barcodeDetector.isOperational()
はfalse
を返すため、上記のクローズはfalseを返し、アクティビティを終了します。
キャッシュをクリアしてスペースを解放した後、動作し始めました。私には400MBの空き容量しかなく、それを示すエラーメッセージはありませんでした。
Googleはバグをすぐに修正することを確認しました。そのため、このバーコード/顔検出のライブラリを使用できない場合があります(リンク ここ ):
- Mobile Visionで必要なサービスは、そのサービスの重大なバグのため、現在無効になっています。これにより、顔またはバーコード検出をまだ使用していないユーザーがそれらの機能を使用できなくなります。この問題が修正されるまで、アプリに新しいモバイルビジョン機能を追加することはお勧めしません。
- すでにモバイルビジョン機能を使用しているアプリの場合、顔またはバーコード検出器を使用する前に、FaceDetector.isOperational()またはBarcodeDetector.isOperational()をチェックして検出器の準備状況を確認してください。
また、Googleのgithubサンプルリポジトリで報告されたいくつかの問題にも記載されています。
https://github.com/googlesamples/Android-vision/issues
例( here ):
本日リリースされた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#isOperational()
public boolean isOperational()
検出を行うために、検出器がローカルで利用可能な必要な依存関係をすべて持っているかどうかを示します。
アプリを最初にインストールするときに、必要なファイルをダウンロードする必要がある場合があります。これがfalseを返す場合、それらのファイルはまだ利用できません。通常、このダウンロードはアプリケーションのインストール時に処理されますが、これは保証されていません。場合によっては、ダウンロードが遅れている可能性があります。
コードにプロセッサが追加されている場合は、検出器の動作状態の表示もdetectorIsOperational()メソッドで示されます。アプリで検出結果を処理しているときにこれを確認し、必要に応じてこの状態をユーザーに伝えることができます。
ディテクタが動作している場合はtrue、依存関係のダウンロードが進行中の場合はfalse
および
public boolean detectIsOperational()
検出器が動作している場合はtrueを返し、動作していない場合はfalseを返します。動作していない場合、検出器は結果を返しません。
検出に必要な関連ライブラリとモデルファイルを取得するためにダウンロードが必要な場合、アプリを初めて起動したときに、検出器がしばらくの間動作しないことがあります。
アプリケーションがすぐに機能するためには、デバイスがGoogle Play開発者サービスを介してライブラリのダウンロードを完了する必要があるようです。
// 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.
私もこれを経験しました。私のテストデバイスの1つでビジョンライブラリが見つかりませんでしたが、コンソールはアプリを起動するたびにライブラリのリクエストを示しましたが、完了しませんでした。 Nexus 4、5 Motorola X2、Samsung S 2-6、およびその他のさまざまなデバイスでテストしましたが、S5だけが問題のあるデバイスでした。 2Gb以上の十分な空き容量があり、デバイスをハードリセットした後、スキャンは意図したとおりに即座に機能しました。
私も同じ経験をしました。 (申し訳ありませんが、担当者が1人しかいないため、コメントを追加してケースを追加することはできません)Nexus 5(2013)とMarshmallow(6.0)を使用しています。私は1 GBの空き容量から始めて、2 GBでは機能せず、機能しませんでした。私は別の1 GB(つまり3 GBの空き領域)を解放することになり、それが機能しました。
モバイルビジョン操作がGoogle Play開発者サービスv9.2で復元 https://developers.google.com/vision/release-notes#google_play_services_92
リリースノート
以下は、Google Play開発者サービスのリリースに対応するMobile Vision APIのアップデートです。
Google Play開発者サービス9.2
バグの修正
モバイルビジョンの操作は、Google Play開発者サービスv9.2で復元されました。新しいバージョンのユーザーは、必要なファイルをダウンロードして、Mobile Visionが提供するアプリケーション機能を利用できます。 Google Play開発者サービスの更新には、モバイルビジョンの修正の一部として構成の更新も含まれています。通常、これは数日ごとに更新されますが、電話機の再起動時にも発生します(これは抑制されるため、これにより構成が更新されるとは限りません)。ファイルのダウンロードエラーが引き続き発生する可能性があるため(デバイスに十分なストレージがない場合など)、Google Play Services開発者はFaceDetector.isOperational()またはBarcodeDetector.isOperational()を呼び出して検出器の準備を確認し、それに応じて機能の動作を低下させることをお勧めします。