camera: add TakePicture API implementation (#60)

One of implementation in #6

Signed-off-by: Hidenori Matsubayashi <[email protected]>
This commit is contained in:
Hidenori Matsubayashi
2022-10-23 09:18:05 +09:00
committed by GitHub
parent be5e050ad2
commit ca81dbb391
3 changed files with 62 additions and 5 deletions
+25 -2
View File
@@ -1,4 +1,4 @@
// Copyright 2021 Sony Group Corporation. All rights reserved.
// Copyright 2022 Sony Group Corporation. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -83,6 +83,9 @@ class CameraPlugin : public flutter::Plugin {
void HandleInitializeCall(
const flutter::EncodableValue* message,
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void HandleTakePictureCall(
const flutter::EncodableValue* message,
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void HandleStartImageStreamCall(
const flutter::EncodableValue* message,
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
@@ -148,7 +151,7 @@ void CameraPlugin::HandleMethodCall(
} else if (!method_name.compare(kCameraChannelApiInitialize)) {
HandleInitializeCall(method_call.arguments(), std::move(result));
} else if (!method_name.compare(kCameraChannelApiTakePicture)) {
result->NotImplemented();
HandleTakePictureCall(method_call.arguments(), std::move(result));
} else if (!method_name.compare(kCameraChannelApiPrepareForVideoRecording)) {
result->NotImplemented();
} else if (!method_name.compare(kCameraChannelApiStartVideoRecording)) {
@@ -285,6 +288,26 @@ void CameraPlugin::HandleInitializeCall(
result->Success();
}
void CameraPlugin::HandleTakePictureCall(
const flutter::EncodableValue* message,
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (!camera_) {
result->Error("Not found an active camera",
"Check for creating a camera device");
return;
}
camera_->TakePicture([p_result = result.release()](
const std::string& captured_file_path) {
if (!captured_file_path.empty()) {
flutter::EncodableValue value(captured_file_path);
p_result->Success(value);
} else {
p_result->Error("Failed to capture", "Failed to capture a camera image");
}
delete p_result;
});
}
void CameraPlugin::HandleStartImageStreamCall(
const flutter::EncodableValue* message,
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {