Google Play 服务在 Android 2.3 Vision API 上崩溃
Posted
技术标签:
【中文标题】Google Play 服务在 Android 2.3 Vision API 上崩溃【英文标题】:Google Play Services Crashes on Android 2.3 Vision API 【发布时间】:2015-12-04 04:06:38 【问题描述】:我正在将 android Vision API 用于 QR 码扫描仪,它可以在多个 Android 设备和版本(Android 2.3.x 设备除外)上正常工作。当我打开 QR 码扫描仪时,会显示一个对话框,显示 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 barcode library not found 中的建议进行了出厂重置,但没有任何成功。
有人知道我做错了什么吗?
【问题讨论】:
感谢您指出这一点。我们将看看这个。 【参考方案1】:看起来这个特殊的 API 依赖于 SharedPreferences.getStringSet()
,根据 Android docs,它仅在 API 11 (Android v3.0 Honeycomb) 中引入。
您将无法在 2.x 设备上使用它。
【讨论】:
那么我应该将其报告为 Android 错误吗? 有人可以帮我解决与 android-vision 相关的类似问题吗? ***.com/questions/32715573/…以上是关于Google Play 服务在 Android 2.3 Vision API 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Google Play 服务在 Android 2.3 Vision API 上崩溃
Android 2.2 将 Highscore 发布到 google play 服务
模拟器中缺少 Google Play 服务(Android 4.4.2)