diff --git a/packages/camera/CHANGELOG.md b/packages/camera/CHANGELOG.md index 49535b74e79d..9ed7a78f1bb1 100644 --- a/packages/camera/CHANGELOG.md +++ b/packages/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.4+1 + +* Fix Android pause and resume video crash when executing in APIs below 24. + ## 0.5.4 * Add feature to pause and resume video recording. diff --git a/packages/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java b/packages/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java index 110c5b690b09..80da644a146a 100644 --- a/packages/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java +++ b/packages/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java @@ -21,6 +21,7 @@ import android.media.Image; import android.media.ImageReader; import android.media.MediaRecorder; +import android.os.Build; import android.util.Size; import android.view.OrientationEventListener; import android.view.Surface; @@ -395,7 +396,12 @@ public void pauseVideoRecording(@NonNull final Result result) { } try { - mediaRecorder.pause(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + mediaRecorder.pause(); + } else { + result.error("videoRecordingFailed", "pauseVideoRecording requires Android API +24.", null); + return; + } } catch (IllegalStateException e) { result.error("videoRecordingFailed", e.getMessage(), null); return; @@ -411,7 +417,13 @@ public void resumeVideoRecording(@NonNull final Result result) { } try { - mediaRecorder.resume(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + mediaRecorder.resume(); + } else { + result.error( + "videoRecordingFailed", "resumeVideoRecording requires Android API +24.", null); + return; + } } catch (IllegalStateException e) { result.error("videoRecordingFailed", e.getMessage(), null); return; diff --git a/packages/camera/example/lib/main.dart b/packages/camera/example/lib/main.dart index cfdcd1d30bc6..1c4b11672530 100644 --- a/packages/camera/example/lib/main.dart +++ b/packages/camera/example/lib/main.dart @@ -393,7 +393,7 @@ class _CameraExampleHomeState extends State await controller.pauseVideoRecording(); } on CameraException catch (e) { _showCameraException(e); - return null; + rethrow; } } @@ -406,7 +406,7 @@ class _CameraExampleHomeState extends State await controller.resumeVideoRecording(); } on CameraException catch (e) { _showCameraException(e); - return null; + rethrow; } } @@ -477,6 +477,7 @@ List cameras; Future main() async { // Fetch the available cameras before initializing the app. try { + WidgetsFlutterBinding.ensureInitialized(); cameras = await availableCameras(); } on CameraException catch (e) { logError(e.code, e.description); diff --git a/packages/camera/pubspec.yaml b/packages/camera/pubspec.yaml index e94d4bd979f0..c9e715225d59 100644 --- a/packages/camera/pubspec.yaml +++ b/packages/camera/pubspec.yaml @@ -2,7 +2,7 @@ name: camera 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.5.4 +version: 0.5.4+1 authors: - Flutter Team