hluhovskyi/CameraButton

Crash on button press.

hydarm opened this issue · 6 comments

Hi getting the following error.

com.dewarder.camerabutton.CameraButton.postExpandingMessageIfNeeded

Hello. Please provide full stacktrace of exception and minimum part of code which causes such error.

Hi, thanks for replying, full error stacktrace:

01-21 10:43:27.165 24619-24619/com.vuinc.app.pocketvu E/InputEventReceiver: Exception dispatching input event.
01-21 10:43:27.165 24619-24619/com.vuinc.app.pocketvu E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
01-21 10:43:27.168 24619-24619/com.vuinc.app.pocketvu E/MessageQueue-JNI: java.lang.BootstrapMethodError: Exception from call site #0 bootstrap method
                                                                              at com.dewarder.camerabutton.CameraButton.postExpandingMessageIfNeeded(CameraButton.java:298)
                                                                              at com.dewarder.camerabutton.CameraButton.onTouchEvent(CameraButton.java:246)
                                                                              at android.view.View.dispatchTouchEvent(View.java:11776)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                              at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:448)
                                                                              at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1829)
                                                                              at android.app.Activity.dispatchTouchEvent(Activity.java:3307)
                                                                              at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
                                                                              at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410)
                                                                              at android.view.View.dispatchPointerEvent(View.java:12015)
                                                                              at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4795)
                                                                              at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4609)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
                                                                              at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200)
                                                                              at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166)
                                                                              at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4293)
                                                                              at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174)
                                                                              at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4350)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
                                                                              at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200)
                                                                              at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166)
                                                                              at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
                                                                              at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6661)
                                                                              at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6635)
                                                                              at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6596)
                                                                              at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6764)
                                                                              at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
                                                                              at android.os.MessageQueue.nativePollOnce(Native Method)
                                                                              at android.os.MessageQueue.next(MessageQueue.java:325)
                                                                          	at 
01-21 10:43:27.177 24619-24619/com.vuinc.app.pocketvu E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.vuinc.app.pocketvu, PID: 24619
                                                                        java.lang.BootstrapMethodError: Exception from call site #0 bootstrap method
                                                                            at com.dewarder.camerabutton.CameraButton.postExpandingMessageIfNeeded(CameraButton.java:298)
                                                                            at com.dewarder.camerabutton.CameraButton.onTouchEvent(CameraButton.java:246)
                                                                            at android.view.View.dispatchTouchEvent(View.java:11776)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)
                                                                            at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:448)
                                                                            at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1829)
                                                                            at android.app.Activity.dispatchTouchEvent(Activity.java:3307)
                                                                            at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
                                                                            at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410)
                                                                            at android.view.View.dispatchPointerEvent(View.java:12015)
                                                                            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4795)
                                                                            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4609)
                                                                            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
                                                                            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200)
                                                                            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166)
                                                                            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4293)
                                                                            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174)
                                                                            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4350)
                                                                            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
                                                                            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200)
                                                                            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166)
                                                                            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174)
                                                                            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
                                                                            at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6661)
                                                                            at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6635)
                                                                            at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6596)
                                                                            at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6764)
                                                                            at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
01-21 10:43:27.177 24619-24619/com.vuinc.app.pocketvu E/AndroidRuntime:     at android.os.MessageQueue.nativePollOnce(Native Method)
                                                                            at android.os.MessageQueue.next(MessageQueue.java:325)
                                                                            at android.os.Looper.loop(Looper.java:142)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:6494)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
                                                                         Caused by: java.lang.NoClassDefFoundError: Invalid descriptor: DragState.
                                                                            	... 58 more

Seems to be triggered when I click the camera button, error is on internal camera button method:

@Override
    public boolean onTouchEvent(MotionEvent event) {
        final int action = event.getActionMasked();
        switch (action) {
            case MotionEvent.ACTION_DOWN: {
                if (isEnabled() && isTouched(event)) {
                    postExpandingMessageIfNeeded();
                    makePaintColorsHovered(true);
                    invalidate();
                    dispatchStateChange(PRESSED);
                    return true;
                }
            }

Specifically the "postExpandingMessageIfNeeded();" line?

Let me know, thank you!!

Seems like issue is related to lambda conversion in new version of android plugin. Can you please provide your version of android plugin, target/compile sdk, build tools and Java target/source compatibility? Or it will be even better if you provide project with minimum part of code which reproduces such behavior. Thanks.

Thanks again for such a quick response!

Android Plugin Version 3.0.1
Gradle Version 4.1

I was using 23 as minimum Sdk version but compile errors after including CameraButton required at least 26.

android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    defaultConfig {
        minSdkVersion 26
        targetSdkVersion 27
}

JRE: 1.8.0_152-release-915-b01

Java target and source compatibilities both 1.8

Some further source code:

CaptureButton XML

<com.dewarder.camerabutton.CameraButton
                    android:id="@+id/captureButton"
                    android:layout_width="@dimen/cb_layout_width_default"
                    android:layout_height="@dimen/cb_layout_height_default"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:layout_gravity="center"
                    android:layout_marginBottom="40dp" />

I have a CameraActivity which contains a CameraFragment, within the CameraFragment's onActivityCreated method, these are the only CameraButton methods I've implemented so far:

captureButton.setShouldCheckConsistency(false);

        captureButton.setOnTapEventListener(new CameraButton.OnTapEventListener() {
            @Override
            public void onTap() {
                if (frontCameraDisable) {
                    return;
                } else {
                    requestCameraPermission();
                    cameraView.captureImage();
                }
            }
        });

        captureButton.setOnHoldEventListener(new CameraButton.OnHoldEventListener() {
            @Override
            public void onStart() {
                if (ckFacing == CameraKit.Constants.FACING_FRONT){
                    frontCameraDisable = true;
                    return;
                }
                isImage = false;
                if (!recording) {
                    cameraView.captureVideo();
                    recording = true;
                }
            }

            @Override
            public void onFinish() {
                recording = false;
            }

            @Override
            public void onCancel() {
                if (recording) {
                    cameraView.stopVideo();
                    recording = false;
                }
            }
        });

The rest seems to be internal workings?

Please let me know if anything else would help?

Honestly no idea if anything's changed on your side, and I didn't implement anything differently, but it seems to be working now... I don't want to speak too soon, but I've tested all the functionality, image capturing is working, recording is working, apologies for inadvertently sending you on a wild goose chase!

Hopefully this isn't just a fluke :)

Thank you very much for your efforts!

No problem. Probably it was some issue with AS/plugin and lamda desugaring. Also thanks a lot for providing information about min sdk of library, it is mistake and will be changed to 15 in next release,