{"_id":"@capacitor-ohos/barcode-scanner","_rev":"2-d03c33e02ddd6568442240a99d1ad225","name":"@capacitor-ohos/barcode-scanner","dist-tags":{"latest":"3.0.2"},"versions":{"3.0.1":{"name":"@capacitor-ohos/barcode-scanner","version":"3.0.1","keywords":["capacitor","plugin","native","barcode-scanner","barcode"],"author":{"url":"Group","name":"Huawei Device Co., Ltd and iSoftStone Information Technology"},"license":"MIT","_id":"@capacitor-ohos/barcode-scanner@3.0.1","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-barcode-scanner/issues"},"dist":{"shasum":"3d13729f6bdadab03e1886d737192f802433ae8f","tarball":"https://registry.npmjs.org/@capacitor-ohos/barcode-scanner/-/barcode-scanner-3.0.1.tgz","fileCount":10,"integrity":"sha512-2p1GywZ+Ae8FRxpcq05j6oQwWLZelT0718sv6JzccmRR6y6XvQXlmaQEiZT07MmYgYsD9cZrEYbmLVFpyr0LUg==","signatures":[{"sig":"MEUCIQC1Xr+SKYNaUt5eOHHl1pK50CixLEqzJZ5G9OQMgLRTegIgPBVqlu5kJX+2odKpF2akpHy5W3Kf+/NFiaIXE5aTiJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90969},"gitHead":"661a2717af972f15092e238035e456a01e176c42","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"capacitor":{"id":"@capacitor/barcode-scanner","platforms":["openharmony"]},"repository":{"url":"gitcode:CPF-Ionicr/capacitor-barcode-scanner","type":"git"},"_npmVersion":"10.5.1","description":"Capacitor plugin using Outsystems Barcode libs","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/barcode-scanner_3.0.1_1777540562658_0.9013591500699207","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@capacitor-ohos/barcode-scanner","version":"3.0.2","description":"Capacitor plugin using Outsystems Barcode libs","capacitor":{"id":"@capacitor/barcode-scanner","platforms":["openharmony"]},"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-barcode-scanner"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-barcode-scanner/issues"},"keywords":["capacitor","plugin","native","barcode-scanner","barcode"],"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","_id":"@capacitor-ohos/barcode-scanner@3.0.2","gitHead":"50a2c55e6a90eca8aded51f9af4f5fff331a7e48","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-s9aZWaurIS9Ac6yMBQpbvvUtAyxY4y032M5s7GqweZ66lV/WBqffyDVAlCAH1tbs5pnE3Vnl/AlU54D4px/bmA==","shasum":"99115771b829645cfafac56e1facbb22ae099075","tarball":"https://registry.npmjs.org/@capacitor-ohos/barcode-scanner/-/barcode-scanner-3.0.2.tgz","fileCount":10,"unpackedSize":90992,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDaJuKbKC8aooVf4OI88ouxoaQnGaeOJgAqPomX4DGUEwIhAOZMHd5kMGoN9pH+teCwsieETiycs31o9W+irCsQl7vM"}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/barcode-scanner_3.0.2_1784790775498_0.5886262629919499"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T09:16:02.556Z","modified":"2026-07-23T07:12:55.806Z","3.0.1":"2026-04-30T09:16:02.800Z","3.0.2":"2026-07-23T07:12:55.641Z"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-barcode-scanner/issues"},"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","keywords":["capacitor","plugin","native","barcode-scanner","barcode"],"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-barcode-scanner"},"description":"Capacitor plugin using Outsystems Barcode libs","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"readme":"# <center>@capacitor/barcode-scanner</center>\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本项目基于 [@capacitor/barcode-scanner@3.0.0](https://www.npmjs.com/package/@capacitor/barcode-scanner/v/3.0.0) 开发。\r\n\r\n## 简介\r\n\r\n@capacitor/barcode-scanner是capacitor生态系统中的核心插件，基于Scan\r\nKit（扫码服务）开发，提供高效、精准的二维码及条形码扫描能力，为跨平台应用开发提供设备差异化适配能力，兼容capacitor的Android、iOS等主流移动平台及浏览器环境，本文档只说明在OpenHarmony系统中的使用。\r\n\r\nAPI 提供 `scanBarcode` 方法，可直接调起原生的扫码界面，支持多种扫码模式和界面定制，满足各类扫码场景需求。\r\n\r\n## 支持平台\r\n\r\n- **OpenHarmony**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过命令行或手动引入即可快速安装插件，支持从npm仓库获取。\r\n\r\n### 命令行安装（推荐）\r\n\r\n安装hionic CLI：\r\n\r\n```bash\r\nnpm install -g hionic\r\n```\r\n\r\n以下两种方式中**任选其一**即可，无需重复操作：\r\n\r\nnpm安装：\r\n\r\n```bash\r\n# 安装插件\r\nnpm install @capacitor/barcode-scanner\r\n\r\n# 同步插件\r\nhionic sync openharmony\r\n```\r\n\r\nhionic CLI安装：\r\n\r\n```bash\r\nhionic plugin add @capacitor/barcode-scanner\r\n```\r\n\r\n### 手动引入安装\r\n\r\n根据插件源码中 `plugin.xml` 配置在项目中引入插件：\r\n\r\n#### 1. 添加插件配置\r\n\r\n根据 `plugin.xml` 的 `config-json` 项，通过 `target` 字段找到 `entry` 模块中 `capacitor.plugins.json` 文件，并根据 `param`\r\n标签添加配置如下：\r\n\r\n```json\r\n{\r\n  \"pkg\": \"@capacitor/barcode-scanner\",\r\n  \"classpath\": \"CapacitorBarcodeScanner\"\r\n}\r\n```\r\n\r\n#### 2. 修改 CMake 配置\r\n\r\n根据 `plugin.xml` 的 `CMakeLists` 项，通过 `modules-name` 字段找到模块 `capacitor`，路径为 `target` 字段的\r\n`CMakeLists.txt` 文件，并添加 `add_subdirectory` 和 `target_link_libraries` 如下：\r\n\r\n```cmake\r\n#START_ADD_SUBDIRECTORY\r\n// ...\r\nadd_subdirectory(CapacitorBarcodeScanner)\r\n// ...\r\n#END_ADD_SUBDIRECTORY\r\n\r\n// ...\r\n\r\ntarget_link_libraries(capacitor PUBLIC\r\n  \"-Wl,--whole-archive\"\r\n  // ...\r\n  CapacitorBarcodeScanner\r\n  // ...\r\n  \"-Wl,--no-whole-archive\"\r\n)\r\n```\r\n\r\n#### 3. 复制源码文件\r\n\r\n根据 `plugin.xml` 的 `source-file` 项，根据 `src` 字段找到需要复制的文件，并根据 `modules-name` 字段和 `target-dir`\r\n字段找到文件复制的具体模块和目录：\r\n\r\n将源码中src/main/cpp/CapacitorBarcodeScanner目录下的CapacitorBarcodeScanner.h、CapacitorBarcodeScanner.cpp、CMakeLists.txt文件引入到capacitor模块中src/main/cpp/CapacitorBarcodeScanner目录下。\r\n\r\n将源码中src/main/ets/components/CapacitorBarcodeScanner目录下的CapacitorBarcodeScanner.ets文件引入到capacitor模块中src/main/ets/components/CapacitorBarcodeScanner目录下。\r\n\r\n#### 4. 添加 ArkTS 配置\r\n\r\n在`capacitor`模块的`build-profile.json5`文件中，`buildOption/arkOptions/runtimeOnly/sources`配置项数组中加入步骤 3 中拷贝的\r\nets 文件路径：\r\n\r\n```json\r\n{\r\n  \"buildOption\": {\r\n    // ...\r\n    \"arkOptions\": {\r\n      \"runtimeOnly\": [\r\n        // ...\r\n        \"./src/main/ets/components/CapacitorBarcodeScanner/CapacitorBarcodeScanner.ets\"\r\n        // ...\r\n      ]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## 卸载\r\n\r\n```bash\r\n# 卸载 barcode-scanner 插件\r\nhionic plugin remove @capacitor/barcode-scanner\r\n```\r\n\r\n## 约束与限制\r\n\r\n### 兼容性\r\n\r\n在以下版本中已测试通过：\r\n\r\n- capacitor: 8.0.0-ohos-8.0.0; SDK: 5.0.5(17); IDE: DevEco Studio: 6.0.0; ROM: 5.1.0.150;\r\n\r\n### 权限要求\r\n\r\nOpenHarmony系统中，扫码功能需申请相机权限，需在主工程的 `module.json5` 的 `requestPermissions` 中添加\r\n`ohos.permission.CAMERA` 权限，配置示例如下：\r\n\r\n```json\r\n{\r\n  \"name\": \"ohos.permission.CAMERA\",\r\n  \"reason\": \"$string:camera_reason\",\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## 使用示例\r\n\r\n### 示例1：基础扫码并处理结果\r\n\r\n```typescript\r\nimport { CapacitorBarcodeScanner } from '@capacitor/barcode-scanner';\r\n\r\nconst startScan = async () => {\r\n  try {\r\n    const { ScanResult, format } = await CapacitorBarcodeScanner.scanBarcode({\r\n      scanInstructions: '请对准条码',\r\n      scanOrientation: 1\r\n    });\r\n    console.log(`扫码结果: ${ScanResult}, 格式: ${format}`);\r\n  } catch (error) {\r\n    const errorMsg = error instanceof Error ? error.message : String(error);\r\n    console.error('扫码出错:', errorMsg);\r\n  }\r\n};\r\n```\r\n\r\n### 示例2：高级扫码（显示切换摄像头按钮）\r\n\r\n```typescript\r\nimport { CapacitorBarcodeScanner } from '@capacitor/barcode-scanner';\r\n\r\nconst startAdvancedScan = async () => {\r\n  try {\r\n    const result = await CapacitorBarcodeScanner.scanBarcode({\r\n      scanInstructions: '请扫码',\r\n      web: {\r\n        showCameraSelection: true\r\n      }\r\n    });\r\n    console.log('结果:', result.ScanResult);\r\n  } catch (error) {\r\n    const errorMsg = error instanceof Error ? error.message : String(error);\r\n    console.error('扫码出错', errorMsg);\r\n  }\r\n};\r\n```\r\n\r\n## 使用说明\r\n\r\nCapacitorBarcodeScanner是插件导出对象，可直接导入使用，导入后即可调用插件提供的所有方法，调用便捷高效，所有API均基于Promise实现，支持异步调用。\r\n\r\n| 方法名                                               | 返回类型                                       | 描述         | 备注      |\r\n|---------------------------------------------------|--------------------------------------------|------------|---------|\r\n| scanBarcode(options: [ScanOptions](#scanoptions)) | Promise&lt;[BarcodeData](#barcodedata)&gt; | 调起扫码界面进行扫码 | 需申请相机权限 |\r\n\r\n### 数据结构\r\n\r\n#### ScanOptions\r\n\r\n调用 `scanBarcode` 方法时的入参对象，用于配置扫码界面和扫码规则。\r\n\r\n| 属性                      | 类型      | 描述                                        | 默认值     | 备注             |\r\n|-------------------------|---------|-------------------------------------------|---------|----------------|\r\n| hint                    | number  | 提示信息类型。可选值参考 [ScanType](#scantype)        | 17      | 无              |\r\n| scanInstructions        | string  | 扫码界面上显示的指示文字                              | '扫描二维码' | 无              |\r\n| scanButton              | boolean | 是否在界面上显示“扫码”按钮。如果为 `true`，则需要用户点击按钮后才处理结果 | false   | 无              |\r\n| scanText                | string  | 扫码按钮上的文字                                  | '立即扫描'  | 无              |\r\n| cameraDirection         | number  | 摄像头方向。`1`: 后置摄像头, `2`: 前置摄像头              | 1       | 无              |\r\n| scanOrientation         | number  | 屏幕方向。`1`: 竖屏, `2`: 横屏, `3`: 自适应           | 1       | 无              |\r\n| web.showCameraSelection | boolean | 是否显示切换摄像头按钮                               | false   | 需在 `web` 对象内定义 |\r\n\r\n#### ScanType\r\n\r\n`hint` 属性的可选值定义，用于指定扫描时识别的条码类型，基于Scan Kit实现。\r\n\r\n| 名称                | 数值 | OpenHarmony适配支持 | 说明                 |\r\n|-------------------|----|-----------------|--------------------|\r\n| QR_CODE           | 0  | ✅ 支持            | 二维码                |\r\n| AZTEC             | 1  | ✅ 支持            | Aztec 码            |\r\n| CODABAR           | 2  | ✅ 支持            | 库德巴码               |\r\n| CODE_39           | 3  | ✅ 支持            | Code 39 条形码        |\r\n| CODE_93           | 4  | ✅ 支持            | Code 93 条形码        |\r\n| CODE_128          | 5  | ✅ 支持            | Code 128 条形码       |\r\n| DATA_MATRIX       | 6  | ✅ 支持            | Data Matrix 码      |\r\n| MAXICODE          | 7  | ❌ 不支持           | MaxiCode（暂不支持）     |\r\n| ITF               | 8  | ✅ 支持            | ITF-14 条形码         |\r\n| EAN_13            | 9  | ✅ 支持            | EAN-13 商品条码        |\r\n| EAN_8             | 10 | ✅ 支持            | EAN-8 商品条码         |\r\n| PDF_417           | 11 | ✅ 支持            | PDF417 二维码         |\r\n| RSS_14            | 12 | ❌ 不支持           | RSS-14（暂不支持）       |\r\n| RSS_EXPANDED      | 13 | ❌ 不支持           | RSS Expanded（暂不支持） |\r\n| UPC_A             | 14 | ✅ 支持            | UPC-A 商品条码         |\r\n| UPC_E             | 15 | ✅ 支持            | UPC-E 商品条码         |\r\n| UPC_EAN_EXTENSION | 16 | ❌ 不支持           | UPC/EAN 扩展码（暂不支持）  |\r\n| ALL               | 17 | ✅ 支持            | 所有支持的码制（推荐使用）      |\r\n\r\n**使用建议**：\r\n\r\n- 默认值为 `17`（ALL），可识别所有支持的条码类型，适用于大多数场景。\r\n\r\n- 如需提高识别速度和准确率，建议指定具体的条码类型。\r\n\r\n- 基于 Scan Kit 实现，部分码制（MAXICODE、RSS_14、RSS_EXPANDED、UPC_EAN_EXTENSION）暂不支持。\r\n\r\n#### BarcodeData\r\n\r\n`scanBarcode` 方法返回的结果对象，包含扫码结果及条码格式信息。\r\n\r\n| 属性         | 类型     | 描述                                                                            |\r\n|------------|--------|-------------------------------------------------------------------------------|\r\n| ScanResult | string | 扫描到的条码/二维码内容字符串                                                               |\r\n| format     | number | 扫描到的条码格式代码（数字），对应 [ScanType](#scantype) 表中的数值（如 `0` 表示 QR_CODE，`9` 表示 EAN_13） |\r\n\r\n## 目录结构\r\n\r\n```plaintext\r\n|---- 目录\r\n|     |---- src/main  # 插件的实现代码\r\n|           |----cpp  # C++ 代码\r\n|           |----ets   # ArkTS 代码\r\n|     |---- README.md          # 说明文档\r\n|     |---- package.json       # 配置文件\r\n|     |---- plugin.xml         # 插件配置文件\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Ionic/capacitor-barcode-scanner/issues)\r\n，当然，也非常欢迎发 [PR](https://gitcode.com/CPF-Ionic/capacitor-barcode-scanner/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **MIT License** 开源，详见 [LICENSE](./LICENSE) 文件。","readmeFilename":"README.md"}