{"_id":"@cordova-ohos/cordova-plugin-media-capture","_rev":"5-27f7ce1046dd271cda863ca9a5d8d590","name":"@cordova-ohos/cordova-plugin-media-capture","dist-tags":{"latest":"6.0.1"},"versions":{"6.0.0":{"name":"@cordova-ohos/cordova-plugin-media-capture","version":"6.0.0","keywords":["cordova","media-capture","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-media-capture@6.0.0","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-plugin-media-capture/issues"},"dist":{"shasum":"85ddd7a527894e5f7169037f429d8e07f33505d6","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-media-capture/-/cordova-plugin-media-capture-6.0.0.tgz","fileCount":18,"integrity":"sha512-TXAXzpOhb2klmhdPK04jrnMihDPunuU4iTR0xqIF1zI7VOMNUP3CtNrRQvOF7/nhnWYlIHKx67nxz+z6K4Z7eQ==","signatures":[{"sig":"MEYCIQD3t4rsNyr412fPL9h5uvcXSybpM7sxphErjrRgiKaBFgIhAITLi4h/f6cwJRVbdJ/GyaMhg33l153SNP/+RBJKjd7d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70779},"cordova":{"id":"cordova-plugin-media-capture","platforms":["ohos"]},"engines":{"cordovaDependencies":{"6.0.0":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"b5336315ed0a21bed2cca4f775088bc413b4c593","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-plugin-media-capture","type":"git"},"_npmVersion":"10.5.1","description":"Cordova media-capture Plugin","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-plugin-media-capture_6.0.0_1773827203342_0.6156362209712745","host":"s3://npm-registry-packages-npm-production"}},"6.0.1":{"name":"@cordova-ohos/cordova-plugin-media-capture","version":"6.0.1","description":"Cordova Media Capture Plugin","cordova":{"id":"cordova-plugin-media-capture","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-media-capture"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-media-capture/issues"},"keywords":["cordova","media-capture","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"6.0.1":{"@cordova-ohos/ohos":">=2.0.0","hcordova":">=1.0.0"}}},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-media-capture@6.0.1","gitHead":"d5792eff862ae58487185f20c32f66607f57619c","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-DpeccebOwOkFDbhmJCQ2HCtRYpYQ95GHarAhwnVztrl8j4w9yhkP90zn3lL3+Hx65S+bVtI16zTWcyIZ2j/t8g==","shasum":"5c33ef4c041e8d9c8ca2fa8518af7ea59241579a","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-media-capture/-/cordova-plugin-media-capture-6.0.1.tgz","fileCount":19,"unpackedSize":97769,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCPdGbHz7XVus36v0pW5Mi2om2p9VOt4V7pgQ68nAmxdgIgU8I2Q8M/jk46JuQhxdKCCD+ij+ts2IXrLqpzAJpu7OI="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordova-plugin-media-capture_6.0.1_1785143459556_0.050396876614932085"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-18T09:46:43.223Z","modified":"2026-07-27T09:10:59.915Z","6.0.0":"2026-03-18T09:46:43.486Z","6.0.1":"2026-07-27T09:10:59.709Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-media-capture/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","media-capture","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-media-capture"},"description":"Cordova Media Capture Plugin","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"readme":"# <center>cordova-plugin-media-capture</center>\r\n\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [cordova-plugin-media-capture@6.0.0](https://npmjs.com/package/cordova-plugin-media-capture/v/6.0.0) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-plugin-media-capture](#cordova-plugin-media-capture)\r\n  - [简介](#简介)\r\n    - [核心特性](#核心特性)\r\n  - [支持平台](#支持平台)\r\n  - [下载安装](#下载安装)\r\n    - [前提条件](#前提条件)\r\n    - [安装插件](#安装插件)\r\n      - [常用安装方法（推荐）](#常用安装方法推荐)\r\n      - [从 GitCode 源码安装](#从-gitcode-源码安装)\r\n      - [安装指定版本](#安装指定版本)\r\n    - [离线安装（本地包）](#离线安装本地包)\r\n    - [安装后验证](#安装后验证)\r\n      - [卸载插件](#卸载插件)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n    - [平台说明](#平台说明)\r\n  - [使用示例](#使用示例)\r\n    - [1. 捕获照片（captureImage）](#1-捕获照片captureimage)\r\n      - [API 说明](#api-说明)\r\n      - [参数说明](#参数说明)\r\n      - [示例代码](#示例代码)\r\n    - [2. 捕获视频（captureVideo）](#2-捕获视频capturevideo)\r\n      - [API 说明](#api-说明-1)\r\n      - [参数说明](#参数说明-1)\r\n      - [示例代码](#示例代码-1)\r\n    - [3. 捕获音频（captureAudio）](#3-捕获音频captureaudio)\r\n      - [API 说明](#api-说明-2)\r\n      - [参数说明](#参数说明-2)\r\n      - [示例代码](#示例代码-2)\r\n    - [4. 核心对象说明](#4-核心对象说明)\r\n      - [4.1 MediaFile 对象](#41-mediafile-对象)\r\n      - [4.2 CaptureError 对象](#42-captureerror-对象)\r\n  - [使用说明](#使用说明)\r\n    - [配置参数说明](#配置参数说明)\r\n    - [API 使用注意事项](#api-使用注意事项)\r\n    - [API 调用规范](#api-调用规范)\r\n  - [新增特性](#新增特性)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\n`cordova-plugin-media-capture` 是 Apache Cordova 生态中用于实现移动应用媒体捕获功能的核心插件，支持调用设备原生的摄像头、麦克风等硬件，实现照片拍摄、视频录制、音频录制等媒体采集操作。该插件遵循 Cordova 跨平台开发规范，封装了不同操作系统的原生媒体捕获接口，开发者无需编写平台特定代码，即可通过统一的 JavaScript API 快速集成媒体捕获能力，大幅降低跨平台应用的开发成本。本文档主要说明该插件在 OHOS 系统中的应用。\r\n\r\n### 核心特性\r\n\r\n- 多类型媒体捕获：支持照片（单张/多张）、视频、音频三种主流媒体类型的捕获，满足社交分享、内容创作、实时记录等场景需求；\r\n\r\n- 原生体验适配：调用设备原生媒体应用（如系统相机、录音机），保留原生操作逻辑与交互体验，避免自定义界面带来的兼容性问题；\r\n\r\n- 灵活参数配置：支持自定义媒体质量（如照片分辨率、视频码率、音频采样率）、捕获数量、时长限制等参数，适配不同业务场景；\r\n\r\n- 完善的错误处理：提供清晰的错误码与错误信息，覆盖权限拒绝、设备不支持、存储空间不足等异常场景，便于开发者调试与用户引导。\r\n\r\n## 支持平台\r\n\r\n插件已针对以下操作系统和设备完成兼容性适配，确保媒体捕获功能稳定运行：\r\n\r\n- ✅ Android：API 级别 21 及以上（覆盖 Android 5.0 及更高版本），支持主流品牌手机（如华为、小米、OPPO、三星等）的原生相机与录音机应用；\r\n\r\n- ✅ iOS：iOS 11.0 及以上，支持 iPhone、iPad 全系列设备，适配 notch 屏（刘海屏）、动态岛等特殊屏幕布局；\r\n\r\n- ✅ Windows：Windows 10 及以上，支持 UWP（通用 Windows 平台）应用，可调用桌面端摄像头与麦克风；\r\n\r\n- ✅ Browser：主流桌面及移动浏览器（Chrome 70+、Firefox 65+、Edge 79+、Safari 13+），通过浏览器原生 `getUserMedia` API 模拟媒体捕获功能（仅支持照片与音频，视频捕获依赖浏览器支持）；\r\n\r\n- ✅ OHOS：5.0 及以上，可调用设备原生摄像头与麦克风，适配系统安全相机与自定义 UI。\r\n\r\n## 下载安装\r\n\r\n### 前提条件\r\n\r\n在安装插件前，需确保开发环境满足以下要求：\r\n\r\n- 已安装 Node.js（v14.0.0 及以上）和 npm（v6.0.0 及以上），可通过 `node -v` 和 `npm -v` 命令验证版本；\r\n\r\n- 已全局安装 HCordova CLI（v10.0.0 及以上），若未安装，执行以下命令：\r\n\r\n```bash\r\nnpm install -g hcordova\r\n```\r\n\r\n3. 已创建 Cordova 项目（若未创建，执行 `hcordova create MediaCaptureApp com.example.mediacapture 媒体捕获示例应用` 快速创建）；\r\n\r\n### 安装插件\r\n\r\n在 Cordova 项目根目录下，根据需求选择以下安装方式：\r\n\r\n#### 常用安装方法（推荐）\r\n\r\n安装稳定版本，适合大多数开发场景：\r\n\r\n```bash\r\n# 全平台安装\r\nhcordova plugin add cordova-plugin-media-capture\r\n\r\n# 指定 OHOS 平台安装\r\nhcordova plugin add cordova-plugin-media-capture --platform ohos\r\n```\r\n\r\n#### 从 GitCode 源码安装\r\n\r\n获取最新开发版，适合需要调试或使用最新特性的场景：\r\n\r\n```bash\r\n# 仅支持 OHOS 平台\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-media-capture.git --platform ohos\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-media-capture.git@develop --platform ohos\r\n```\r\n\r\n#### 安装指定版本\r\n\r\n若项目需兼容特定版本，可指定版本号安装：\r\n\r\n```bash\r\nhcordova plugin add cordova-plugin-media-capture@1.0.0 --platform ohos\r\n```\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：../Downloads/cordova-plugin-media-capture）\r\n# 执行离线安装\r\nhcordova plugin add ../Downloads/cordova-plugin-media-capture  --platform ohos\r\n```\r\n\r\n### 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n#### 卸载插件\r\n\r\n```bash\r\n# 全平台卸载\r\nhcordova plugin remove cordova-plugin-media-capture\r\n\r\n# 指定 OHOS 系统平台卸载\r\nhcordova plugin remove cordova-plugin-media-capture --platform ohos\r\n```\r\n\r\n## 约束与限制\r\n\r\n1. OHOS 平台使用时，需在主工程 module.json5 中添加相机、麦克风权限，否则无法正常进行媒体捕获操作；\r\n2. OHOS 平台下，视频捕获使用系统安全相机，配置参数无效；音频捕获使用自定义 UI，参数配置无效，录制时长由用户 UI 操作决定；\r\n3. 媒体捕获成功后返回的文件路径需配合 `cordova-plugin-file` 插件使用，才能正常访问文件内容；\r\n4. 不同平台对媒体格式、质量的支持存在差异，建议开发时进行多平台测试；\r\n5. 捕获媒体文件需确保设备存储空间充足，避免因空间不足导致捕获失败。\r\n\r\n### 兼容性\r\n\r\n支持：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| SDK | API12+ |\r\n| IDE | DevEco Studio: 5.0+ |\r\n| ROM | 5.1+ |\r\n| Emulator | OpenHarmony 6.0+ |\r\n\r\n在以下版本中已测试通过：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| @cordova-ohos/ohos | 14.0.1-ohos-14.0.1 |\r\n| SDK | 5.0.0(12) |\r\n| IDE | DevEco Studio: 6.0.13.200 |\r\n| ROM | 5.1.0.120 SP3 |\r\n| Emulator | OpenHarmony 6.0.1(21) |\r\n\r\n### 平台说明\r\n\r\n需在主工程的 module.json5 中配置以下权限，否则无法正常进行媒体捕获操作：\r\n\r\n```json\r\n{\r\n    \"name\": \"ohos.permission.MICROPHONE\",\r\n    \"reason\": \"$string:microphoneInfo\",\r\n    \"usedScene\": {\r\n        \"abilities\": [\r\n        \"EntryAbility\"\r\n        ],\r\n        \"when\": \"always\"\r\n    }\r\n},\r\n{\r\n    \"name\": \"ohos.permission.CAMERA\",\r\n    \"reason\": \"$string:cameraInfo\",\r\n    \"usedScene\": {\r\n        \"abilities\": [\r\n        \"EntryAbility\"\r\n        ],\r\n        \"when\": \"always\"\r\n    }\r\n}\r\n```\r\n\r\n- **ohos.permission.MICROPHONE**：麦克风权限\r\n- **ohos.permission.CAMERA**：摄像头权限\r\n\r\n## 使用示例\r\n\r\n插件通过全局对象 `navigator.device.capture` 暴露媒体捕获 API，所有 API 需在 `deviceready` 事件触发后调用（确保 Cordova 环境就绪）。以下为各媒体捕获功能的详细示例及对应 API 说明：\r\n\r\n### 1. 捕获照片（captureImage）\r\n\r\n#### API 说明\r\n\r\n调用设备相机捕获照片，支持单张或多张拍摄，返回照片文件的路径、大小、类型等信息。\r\n\r\n```javascript\r\nnavigator.device.capture.captureImage(\r\n   successCallback,  // 捕获成功回调\r\n   errorCallback,    // 捕获失败回调\r\n   options           // 配置参数（可选）\r\n);\r\n```\r\n\r\n#### 参数说明\r\n\r\n| 参数名 | 类型 | 说明 |\r\n|---|---|---|\r\n| `successCallback` | Function | 捕获成功时触发，参数为 `MediaFile` 数组（每张照片对应一个 `MediaFile` 对象） |\r\n| `errorCallback` | Function | 捕获失败时触发，参数为 `CaptureError` 对象（包含错误码和错误信息） |\r\n| `options` | Object | 可选配置参数，属性如下：- `quality`：Number，照片质量（0-100，100 为最高，默认 80），返回值为 URL |\r\n\r\n#### 示例代码\r\n\r\n```javascript\r\ndocument.addEventListener('deviceready', function() {\r\n   // 点击“拍摄照片”按钮\r\n   document.getElementById('captureImageBtn').addEventListener('click', function() {\r\n       // 配置参数：捕获 3 张照片，质量 80\r\n       const options = {\r\n           quality: 80\r\n       };\r\n\r\n       // 调用捕获照片 API\r\n       navigator.device.capture.captureImage(\r\n           function(mediaFiles) {\r\n               // 成功回调：遍历照片列表并展示\r\n               const imageContainer = document.getElementById('imageContainer');\r\n               imageContainer.innerHTML = ''; // 清空原有内容\r\n               mediaFiles.forEach((file, index) => {\r\n                   console.log(`照片${index+1}信息：`, file);\r\n                   // 创建图片元素\r\n                   const img = document.createElement('img');\r\n                   // @cordova-ohos/ohos 框架封装了 \"https://localhost/\"，可以访问本地文件\r\n                   img.src = \"https://localhost/\" + file.fullPath; // 文件路径\r\n                   img.style.width = '200px';\r\n                   img.style.margin = '10px';\r\n                   \r\n                   // 添加图片到容器\r\n                   imageContainer.appendChild(img);\r\n\r\n                   // 可选：获取照片 Base64 编码（适合小文件，如头像）\r\n                   const reader = new FileReader();\r\n\r\n                   reader.onloadend = function() {\r\n                       const base64 = reader.result;\r\n                       console.log(`照片${index+1}Base64：`, base64.substring(0, 50) + '...'); // 打印前 50 字符避免过长\r\n                   };\r\n\r\n                   reader.readAsDataURL(file);\r\n               });\r\n           },\r\n           function(error) {\r\n               // 失败回调：处理错误\r\n               console.error('照片捕获错误：', error);\r\n           },\r\n           options\r\n       );\r\n   });\r\n}, false);\r\n```\r\n\r\n### 2. 捕获视频（captureVideo）\r\n\r\n#### API 说明\r\n\r\n调用设备相机录制视频，支持配置录制时长、视频质量等参数，返回视频文件信息（OHOS 平台使用安全相机，配置参数无效）。\r\n\r\n```javascript\r\nnavigator.device.capture.captureVideo(\r\n   successCallback,  // 录制成功回调\r\n   errorCallback,    // 录制失败回调\r\n   options           // 配置参数（可选）\r\n);\r\n```\r\n\r\n#### 参数说明\r\n\r\n| 参数名 | 类型 | 说明 |\r\n|---|---|---|\r\n| `successCallback` | Function | 录制成功时触发，参数为 `MediaFile` 数组（每个视频对应一个 `MediaFile` 对象） |\r\n| `errorCallback` | Function | 录制失败时触发，参数为 `CaptureError` 对象 |\r\n| `options` | Object | OHOS 使用安全相机，参数配置无效 |\r\n\r\n#### 示例代码\r\n\r\n```javascript\r\ndocument.addEventListener('deviceready', function() {\r\n   // 点击“录制视频”按钮\r\n   document.getElementById('captureVideoBtn').addEventListener('click', function() {\r\n       // OHOS 使用安全相机，配置参数无效\r\n       const options = {\r\n           limit: 1,\r\n           duration: 30\r\n       };\r\n\r\n       // 调用捕获视频 API\r\n       navigator.device.capture.captureVideo(\r\n           function(mediaFiles) {\r\n               const video = mediaFiles[0];\r\n               console.log('视频信息：', video);\r\n\r\n               // 展示视频\r\n               const videoContainer = document.getElementById('videoContainer');\r\n               videoContainer.innerHTML = '';\r\n               const videoElement = document.createElement('video');\r\n               // @cordova-ohos/ohos 框架封装了 \"https://localhost/\"，可以访问本地文件\r\n               videoElement.src = \"https://localhost/\" + video.fullPath;\r\n               videoElement.controls = true; // 显示播放控制\r\n               videoElement.style.width = '300px';\r\n               videoContainer.appendChild(videoElement);\r\n           },\r\n           function(error) {\r\n               console.error('视频捕获错误：', error);\r\n           },\r\n           options\r\n       );\r\n   });\r\n}, false);\r\n```\r\n\r\n### 3. 捕获音频（captureAudio）\r\n\r\n#### API 说明\r\n\r\n调用设备麦克风录制音频，支持配置录制时长、音频质量等参数，返回音频文件信息（OHOS 平台使用自定义 UI，参数配置无效，具体时长由用户 UI 决定）。\r\n\r\n```javascript\r\nnavigator.device.capture.captureAudio(\r\n   successCallback,  // 录制成功回调\r\n   errorCallback,    // 录制失败回调\r\n   options           // 配置参数（可选）\r\n);\r\n```\r\n\r\n#### 参数说明\r\n\r\n| 参数名 | 类型 | 说明 |\r\n|---|---|---|\r\n| `successCallback` | Function | 录制成功时触发，参数为 `MediaFile` 数组（每个音频对应一个 `MediaFile` 对象） |\r\n| `errorCallback` | Function | 录制失败时触发，参数为 `CaptureError` 对象 |\r\n| `options` | Object | OHOS 使用自定义 UI，参数配置无效，具体时长由用户 UI 决定 |\r\n\r\n#### 示例代码\r\n\r\n```javascript\r\ndocument.addEventListener('deviceready', function() {\r\n   // 点击“录制音频”按钮\r\n   document.getElementById('captureAudioBtn').addEventListener('click', function() {\r\n       // OHOS 使用自定义 UI，参数配置无效，具体时长由用户 UI 决定\r\n       const options = {\r\n           limit: 1,\r\n           duration: 60\r\n       };\r\n       // 调用捕获音频 API\r\n       navigator.device.capture.captureAudio(\r\n           function(mediaFiles) {\r\n               const audio = mediaFiles[0];\r\n               console.log('音频信息：', audio);\r\n\r\n               // 展示音频播放控件\r\n               const audioContainer = document.getElementById('audioContainer');\r\n               audioContainer.innerHTML = '';\r\n               const audioElement = document.createElement('audio');\r\n               // @cordova-ohos/ohos 框架封装了 \"https://localhost/\"，可以访问本地文件\r\n               audioElement.src = \"https://localhost/\" + audio.fullPath;\r\n               audioElement.controls = true;\r\n               audioElement.style.width = '300px';\r\n               audioContainer.appendChild(audioElement);\r\n           },\r\n           function(error) {\r\n               console.error('音频捕获错误：', error);\r\n           },\r\n           options\r\n       );\r\n   });\r\n}, false);\r\n```\r\n\r\n### 4. 核心对象说明\r\n\r\n#### 4.1 MediaFile 对象\r\n\r\n捕获成功后返回的媒体文件对象，具体参考 cordova-plugin-file 插件，包含以下关键属性：\r\n\r\n| 属性名 | 类型 | 说明 |\r\n|---|---|---|\r\n| `name` | String | 文件名（如 `20250101_123456.m4a`） |\r\n| `fullPath` | String | 文件完整路径（如 `/data/storage/el2/base/files/cache/20250101_123456.m4a`） |\r\n| `type` | String | 文件 MIME 类型（如 `image/jpeg`、`video/mp4`、`audio/aac`） |\r\n| `size` | Number | 文件大小（单位：字节） |\r\n\r\n#### 4.2 CaptureError 对象\r\n\r\n捕获失败时返回的错误对象，包含以下关键属性：\r\n\r\n| 属性名 | 类型 | 说明 |\r\n|---|---|---|\r\n| `code` | Number | 错误码，取值如下：- `CaptureError.PERMISSION_DENIED`：权限被拒绝；- `CaptureError.NOT_SUPPORTED`：设备不支持该功能；- `CaptureError.NO_MEDIA_FILES`：未捕获到媒体文件；- `CaptureError.MEDIA_FILE_SIZE_EXCEEDED`：文件大小超过限制；- `CaptureError.INVALID_ARGUMENT`：传入无效参数 |\r\n| `message` | String | 错误描述信息（平台特定） |\r\n\r\n## 使用说明\r\n\r\n### 配置参数说明\r\n\r\n无额外全局配置参数，API 调用需传入对应参数；OHOS 平台特殊说明：视频捕获使用安全相机，参数配置无效；音频捕获使用自定义 UI，参数配置无效，录制时长由用户操作决定；需额外配置相机、麦克风权限。\r\n\r\n### API 使用注意事项\r\n\r\n1. 所有 API 必须在 `deviceready` 事件触发后调用，否则会导致 API 调用失败；\r\n2. OHOS 平台必须在主工程 module.json5 中配置相机、麦克风权限，否则无法正常捕获媒体；\r\n3. 媒体捕获完成后，可通过 `MediaFile` 对象获取文件信息，配合 `cordova-plugin-file` 插件可实现文件的进一步操作（如上传、保存）；\r\n4. 捕获过程中若用户拒绝权限，需引导用户前往系统设置开启对应权限；\r\n5. 不同平台的媒体文件路径格式存在差异，开发时需注意适配，避免路径错误；\r\n6. 建议在错误回调中处理各类异常场景，提升用户体验。\r\n\r\n\r\n### API 调用规范\r\n\r\n1. 所有媒体捕获 API 均通过 `navigator.device.capture` 对象调用，需确保 Cordova 环境初始化完成（即 `deviceready` 事件触发后）；\r\n2. 回调函数建议完整实现，尤其是错误回调，便于排查开发及运行过程中的异常；\r\n3. 每次媒体捕获操作完成后，建议根据业务需求释放相关资源，避免内存泄漏；\r\n4. 调用远程媒体资源时，需确保设备网络通畅，本地媒体路径需使用正确的沙箱路径（配合 `cordova-plugin-file` 插件）。\r\n\r\n## 新增特性\r\n\r\n1. 适配 OHOS 5.0+ 系统，严格遵循 OpenHarmony 开发规范，支持照片、视频、音频三种媒体类型的捕获；\r\n2. 保留原有插件核心 API 接口和功能逻辑，确保跨平台一致性，原 Android/iOS 项目移植到 OHOS 后无需大量修改代码；\r\n3. 补充 OHOS 平台特殊说明，明确视频、音频捕获的参数限制，以及权限配置要求；\r\n4. 兼容 Cordova 14.0.1-ohos 版本，优化 OHOS 平台媒体捕获稳定性，适配系统安全相机与自定义 UI；\r\n5. 完善 OHOS 平台错误处理逻辑，便于开发者调试。\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-plugin-media-capture/\r\n├── src/                          # 源代码目录\r\n│   └── main/                     # 主要源代码\r\n│       ├── cpp/                  # C++ 原生代码\r\n│       │   └── Capture/          # 媒体捕获模块\r\n│       │       ├── Capture.cpp   # 媒体捕获功能的 C++ 实现\r\n│       │       └── Capture.h     # 媒体捕获功能的头文件\r\n│       └── ets/                  # ArkTS 代码（OpenHarmony API）\r\n│           └── components/       # 组件目录\r\n│               └── MediaAction/  # 媒体动作组件\r\n│                   └── AudioAction.ets  # 音频动作的 ArkTS 实现\r\n├── www/                          # Web 资源目录\r\n│   ├── harmony/                  # OHOS 相关资源\r\n│   │   └── init.js               # js 插件环境初始化\r\n│   ├── capture.js                # JavaScript 媒体捕获接口（Cordova 桥接层）\r\n│   ├── CaptureAudioOptions.js    # 音频捕获选项配置\r\n│   ├── CaptureError.js           # 媒体捕获错误码定义\r\n│   ├── CaptureImageOptions.js    # 图片捕获选项配置\r\n│   ├── CaptureVideoOptions.js    # 视频捕获选项配置\r\n│   ├── ConfigurationData.js      # 配置数据模型\r\n│   ├── helpers.js                # 辅助函数工具集\r\n│   ├── MediaFile.js              # 媒体文件模型\r\n│   └── MediaFileData.js          # 媒体文件数据模型\r\n├── .gitignore                    # Git 忽略文件配置\r\n├── LICENSE                       # 项目开源许可证\r\n├── OAT.xml                       # OpenHarmony 审核配置文件\r\n├── package.json                  # Node.js 包配置\r\n├── plugin.xml                    # Cordova 插件描述文件（核心配置）\r\n└── README.md                     # 项目说明文档\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-media-capture/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-plugin-media-capture/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n1. Apache Cordova：访问 [Apache Cordova 官方仓库](https://github.com/apache/cordova-plugin-media-capture)\r\n\r\n2. OHOS cordova：访问 [https://gitcode.com/CPF-Cordova/cordova-plugin-media-capture](https://gitcode.com/CPF-Cordova/cordova-plugin-media-capture)\r\n","readmeFilename":"README.md"}