Сбои сервисов Google Play на Android 2.3 Vision API
Я использую 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 не найдена без каких-либо успехов.
Кто-нибудь знает, что я делаю не так?
1 ответ
Похоже, что этот конкретный API опирается на SharedPreferences.getStringSet()
который, согласно документам Android, был представлен только в API 11 (Android v3.0 Honeycomb).
Вы не сможете использовать это на устройствах 2.x.