From 1ca523f36d54ce120f4e3b6765b8162bde02b83d Mon Sep 17 00:00:00 2001 From: Shtolik Date: Fri, 25 Aug 2017 10:08:22 +0300 Subject: [PATCH] fixing exception of updating layout from cameraKit thread on some devices E/AndroidRuntime: FATAL EXCEPTION: CameraViewWorker Process: com.in4mo.mmr300.demo, PID: 32194 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6604) at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:947) at android.view.View.requestLayout(View.java:18745) at android.view.View.requestLayout(View.java:18745) at android.view.View.requestLayout(View.java:18745) at android.view.View.requestLayout(View.java:18745) at android.view.View.requestLayout(View.java:18745) at android.view.View.requestLayout(View.java:18745) at android.view.View.requestLayout(View.java:18745) at com.otaliastudios.cameraview.CameraView$CameraCallbacks.onCameraPreviewSizeChanged(CameraView.java:1218) at com.otaliastudios.cameraview.Camera1.setup(Camera1.java:116) at com.otaliastudios.cameraview.Camera1.start(Camera1.java:153) at com.otaliastudios.cameraview.CameraView$2.run(CameraView.java:500) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.os.HandlerThread.run(HandlerThread.java:61) --- .../main/java/com/otaliastudios/cameraview/CameraView.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index 2c75c9d3..8450ce9a 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -1215,7 +1215,12 @@ public class CameraView extends FrameLayout { // Request a layout pass for onMeasure() to do its stuff. // Potentially this will change CameraView size, which changes Surface size, // which triggers a new Preview size. But hopefully it will converge. - requestLayout(); + uiHandler.post(new Runnable() { + @Override + public void run() { + requestLayout(); + } + }); }