Credntia / MVBarcodeReader

A Barcode scanner library for Android. Uses the Google Play Services' mobile vision api for barcode detection.
Apache License 2.0
68 stars 22 forks source link

java.lang.ClassCastException: com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview cannot be cast to online.devliving.mobilevisionpipeline.camera.CameraSourcePreview #24

Closed forenbuddy closed 6 years ago

forenbuddy commented 6 years ago

I try to use the MVBarcodeReader in the simplest form but get an Exception on two different devices:

09-06 13:53:00.494 8589-8589/com.mysite.myapp E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mysite.myapp/devliving.online.mvbarcodereader.BarcodeCaptureActivity}: java.lang.ClassCastException: com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview cannot be cast to online.devliving.mobilevisionpipeline.camera.CameraSourcePreview at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5041) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassCastException: com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview cannot be cast to online.devliving.mobilevisionpipeline.camera.CameraSourcePreview at devliving.online.mvbarcodereader.BarcodeCaptureFragment.onCreateView(BarcodeCaptureFragment.java:130) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2248) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1340) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1569) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1636) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2201) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2155) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2064) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:379) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164) at android.app.Activity.performStart(Activity.java:5114) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)  at android.app.ActivityThread.access$600(ActivityThread.java:141)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:137)  at android.app.ActivityThread.main(ActivityThread.java:5041)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:511)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)  at dalvik.system.NativeStart.main(Native Method) 

my build.gradle contains: compile 'online.devliving:mvbarcodereader:1.1.0' compile 'com.android.support:appcompat-v7:25.4.0' compile 'com.google.android.gms:play-services-basement:11.2.0' compile 'com.google.android.gms:play-services-vision:11.2.0' compile 'com.android.support:design:25.4.0' compile 'com.android.support:support-annotations:25.4.0'

What could I try next? Please help!

iamMehedi commented 6 years ago

@forenbuddy Have you tried cleaning the project or invalidating caches and restarting the IDE?

forenbuddy commented 6 years ago

Yes. Did not do the invalidating caches first, but after doing this and cleaning, I get the same exception:

09-07 11:11:19.052 16780-16780/com.mysite.myapp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mysite.myapp, PID: 16780 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mysite.myapp/devliving.online.mvbarcodereader.BarcodeCaptureActivity}: java.lang.ClassCastException: com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview cannot be cast to online.devliving.mobilevisionpipeline.camera.CameraSourcePreview at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595) at android.app.ActivityThread.access$800(ActivityThread.java:178) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5631) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) Caused by: java.lang.ClassCastException: com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview cannot be cast to online.devliving.mobilevisionpipeline.camera.CameraSourcePreview at devliving.online.mvbarcodereader.BarcodeCaptureFragment.onCreateView(BarcodeCaptureFragment.java:130) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2248) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1340) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1569) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1636) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2201) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2155) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2064) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:379) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1244) at android.app.Activity.performStart(Activity.java:6108) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2478) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)  at android.app.ActivityThread.access$800(ActivityThread.java:178)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)  at android.os.Handler.dispatchMessage(Handler.java:111)  at android.os.Looper.loop(Looper.java:194)  at android.app.ActivityThread.main(ActivityThread.java:5631)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 

forenbuddy commented 6 years ago

Here is maybe also how I call it:

MVBarcodeScanner.ScanningMode mMode = SINGLE_AUTO; int mFormats = 256; new MVBarcodeScanner.Builder() .setScanningMode(mMode) .setFormats(mFormats) .build() .launchScanner(MainActivity.this, 9003);

iamMehedi commented 6 years ago

mFormats should be an integer array if you want to scan for multiple specific formats and the integers provided must all be defined barcode types e.g Barcode.QR_CODE. Please try the latest version (1.1.1) of the library and see if the problem persists.

forenbuddy commented 6 years ago

Unfortunately also with version 1.1.1 it gives the same exception: 09-07 17:09:05.419 20854-20854/com.mysite.myapp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mysite.myapp, PID: 20854 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mysite.myapp/devliving.online.mvbarcodereader.BarcodeCaptureActivity}: java.lang.ClassCastException: com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview cannot be cast to online.devliving.mobilevisionpipeline.camera.CameraSourcePreview at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595) at android.app.ActivityThread.access$800(ActivityThread.java:178) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5631) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) Caused by: java.lang.ClassCastException: com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview cannot be cast to online.devliving.mobilevisionpipeline.camera.CameraSourcePreview at devliving.online.mvbarcodereader.BarcodeCaptureFragment.onCreateView(BarcodeCaptureFragment.java:130) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2337) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229) at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3221) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3171) at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:552) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1244) at android.app.Activity.performStart(Activity.java:6108) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2478) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)  at android.app.ActivityThread.access$800(ActivityThread.java:178)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)  at android.os.Handler.dispatchMessage(Handler.java:111)  at android.os.Looper.loop(Looper.java:194)  at android.app.ActivityThread.main(ActivityThread.java:5631)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 

Invocation tried here: MVBarcodeScanner.ScanningMode mMode = SINGLE_AUTO; int mFormats = Barcode.QR_CODE; new MVBarcodeScanner.Builder() .setScanningMode(mMode) .setFormats(mFormats) .build() .launchScanner(MainActivity.this, 9003);

I also tried it with mMode as an Array, but no luck. Of course I do not want to scan for any multiple specific formats, especially if the most basic attempt to scan a QR code always fails with the same exception.

I switched to compile 'com.android.support:appcompat-v7:26.0.0' and related, but this has no impact on the exception as well.

iamMehedi commented 6 years ago

That's weird, there is no import or cast of com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview in the code mentioned in stacktrace. The sample is working on all my test devices. Please try out the sample app to see if that gives the same exception or not. And provide the device & android os details you are testing on.

forenbuddy commented 6 years ago

Turns out, I had some other sources interfering with my code.

Thank you very much!