sys_camera_handler.dart 951 Bytes
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';
    }

    final String action = type == 'video'
        ? 'android.media.action.VIDEO_CAPTURE'
        : 'android.media.action.IMAGE_CAPTURE';

    final intent = AndroidIntent(action: action);
    await intent.launch();
    return true;
  }
}