2

Android 2.3.x デバイスを除く、いくつかの Android デバイスとバージョンで正常に動作する QR コード スキャナー用の Android Vision API を使用しています。QR-code-scanner を開くと、google-play-services がクラッシュするというダイアログが表示されます。Logcat に次のエラーが表示されます。

FATAL EXCEPTION: AsyncOperationService[VisionDependencyIntentService]
java.lang.NoSuchMethodError: android.content.SharedPreferences.getStringSet
        at com.google.android.gms.vision.service.VisionDependencyIntentService.b(SourceFile:185)
        at com.google.android.gms.vision.service.VisionDependencyIntentService.a(SourceFile:174)
        at com.google.android.gms.vision.service.a.a.a(SourceFile:45)
        at com.google.android.gms.chimera.f.run(SourceFile:179)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
        at java.lang.Thread.run(Thread.java:1019)

これは私のフラグメントのコードです

@Override
public void onViewCreated(View view, Bundle savedInstanceState)
{
  super.onViewCreated(view, savedInstanceState);

  Activity activity = getActivity();

  preview = (CameraSourcePreview) view.findViewById(R.id.preview);

  int connectionResult = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activity);
  if (connectionResult == ConnectionResult.SUCCESS)
  {
     // create a barcode detector.
     BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(activity).setBarcodeFormats(Barcode.QR_CODE)
           .build();

     // create a processor to filter qr-codes and a tracker to handle the selected qr-code.
     barcodeDetector.setProcessor(new QrCodeProcessor(barcodeDetector, new QrCodeTracker(this)));

     if (barcodeDetector.isOperational())
     {
        // Creates and starts the camera.
        cameraSource = new CameraSource.Builder(activity, barcodeDetector)
              .setFacing(CameraSource.CAMERA_FACING_BACK).setRequestedPreviewSize(1600, 1024)
              .setRequestedFps(15.0f).build();
     }
     else
     {
        showAlert(R.string.QrCodeScanner_alert_play_services_not_operational_header,
              R.string.QrCodeScanner_alert_play_services_not_operational_body);
     }
  }
  else
  {
     PlatformUtil.handlePlayServicesError(activity, connectionResult);
  }
}

Google Play サービス ガイドによると、Android 2.3 をサポートする必要があります: https://developers.google.com/android/guides/setup

私はまた、いくつかのスペースを解放しようとし、で提案されているように出荷時設定にリセットしました: Google Vision バーコード ライブラリが見つかりませんでした。

誰かが私が間違っていることを知っていますか?

4

1 に答える 1

2

この特定の API は、 Android docsSharedPreferences.getStringSet()によると、API 11 (Android v3.0 Honeycomb) でのみ導入された に依存しているようです。

これは 2.x デバイスでは使用できません。

于 2015-09-08T13:00:50.200 に答える