[camera] Ensure that channel.invokeMethod runs on the main thread (#3444)

diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md
index 55145ff..cc73473 100644
--- a/packages/camera/camera/CHANGELOG.md
+++ b/packages/camera/camera/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.7.0+1
+
+* Ensure communication from JAVA to Dart is done on the main UI thread.
+
 ## 0.7.0
 
 * BREAKING CHANGE: `CameraValue.aspectRatio` now returns `width / height` rather than `height / width`. [(commit)](https://github.com/flutter/plugins/commit/100c7470d4066b1d0f8f7e4ec6d7c943e736f970)
diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java
index 5681f72..3892452 100644
--- a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java
+++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java
@@ -4,6 +4,8 @@
 
 package io.flutter.plugins.camera;
 
+import android.os.Handler;
+import android.os.Looper;
 import android.text.TextUtils;
 import androidx.annotation.Nullable;
 import io.flutter.embedding.engine.systemchannels.PlatformChannel;
@@ -104,7 +106,14 @@
     if (cameraChannel == null) {
       return;
     }
-    cameraChannel.invokeMethod(eventType.method, args);
+    new Handler(Looper.getMainLooper())
+        .post(
+            new Runnable() {
+              @Override
+              public void run() {
+                cameraChannel.invokeMethod(eventType.method, args);
+              }
+            });
   }
 
   void send(DeviceEventType eventType) {
@@ -115,6 +124,13 @@
     if (deviceChannel == null) {
       return;
     }
-    deviceChannel.invokeMethod(eventType.method, args);
+    new Handler(Looper.getMainLooper())
+        .post(
+            new Runnable() {
+              @Override
+              public void run() {
+                deviceChannel.invokeMethod(eventType.method, args);
+              }
+            });
   }
 }
diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml
index b0ebb9c..b406ce5 100644
--- a/packages/camera/camera/pubspec.yaml
+++ b/packages/camera/camera/pubspec.yaml
@@ -2,7 +2,7 @@
 description: A Flutter plugin for getting information about and controlling the
   camera on Android and iOS. Supports previewing the camera feed, capturing images, capturing video,
   and streaming image buffers to dart.
-version: 0.7.0
+version: 0.7.0+1
 homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera
 
 dependencies: