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;
  }
}