[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: