sys_camera_handler.dart
1.1 KB
import 'dart:io';
import 'package:android_intent_plus/android_intent.dart';
import 'package:appframe/services/dispatcher.dart';
/// sysCamera 指令处理类
///
/// 打开系统相机应用(等同于点击桌面相机图标),仅 Android 平台生效。
/// 可选参数 type:'photo'(默认,拍照模式)或 'video'(录像模式)。
/// H5 调用示例:{ "cmd": "sysCamera" } 或 { "cmd": "sysCamera", "params": { "type": "video" } }
class SysCameraHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(params) async {
if (!Platform.isAndroid) {
return false;
}
String type = 'photo';
if (params is Map<String, dynamic>) {
type = params['type'] as String? ?? 'photo';
}
// 使用 STILL_IMAGE_CAMERA / VIDEO_CAMERA 打开系统相机应用
// 而非 IMAGE_CAPTURE / VIDEO_CAPTURE 的捕获模式
final String action = type == 'video'
? 'android.media.action.VIDEO_CAMERA'
: 'android.media.action.STILL_IMAGE_CAMERA';
final intent = AndroidIntent(action: action);
await intent.launch();
return true;
}
}