From b55212e4a1dd94663fa7f63ec174ecbb5a1d8768 Mon Sep 17 00:00:00 2001
From: "Jason.z" <281674669@qq.com>
Date: Sat, 31 Aug 2024 18:54:46 +0800
Subject: [PATCH] add: first commit~
---
.github/workflows/deploy.yml | 36 +
.gitignore | 3 +
README.md | 31 +
README_zh.md | 40 +
docs/.vitepress/config.mts | 46 +
docs/.vitepress/configs/index.ts | 2 +
docs/.vitepress/configs/navbar/en.ts | 26 +
docs/.vitepress/configs/navbar/index.ts | 2 +
docs/.vitepress/configs/navbar/zh.ts | 26 +
docs/.vitepress/configs/sidebar/en.ts | 35 +
docs/.vitepress/configs/sidebar/index.ts | 2 +
docs/.vitepress/configs/sidebar/zh.ts | 35 +
docs/.vitepress/theme/Layout.vue | 17 +
docs/.vitepress/theme/index.ts | 8 +
docs/api/scan.md | 67 +
docs/api/stop-scan.md | 23 +
docs/guide/capacitor.md | 21 +
docs/guide/changelog.md | 7 +
docs/guide/errcode.md | 11 +
docs/guide/index.md | 28 +
docs/guide/quickstart.md | 23 +
docs/guide/thanks.md | 9 +
docs/guide/troubleshooting.md | 8 +
docs/index.md | 35 +
docs/public/images/android.png | Bin 0 -> 190545 bytes
docs/public/images/barcode_logo.png | Bin 0 -> 17184 bytes
docs/public/images/cordova_logo.png | Bin 0 -> 27408 bytes
docs/public/images/ionic_logo.png | Bin 0 -> 2965 bytes
docs/public/images/sponsor.svg | 1 +
docs/public/images/xcode-2.png | Bin 0 -> 177545 bytes
docs/public/images/xcode-3.png | Bin 0 -> 493224 bytes
docs/zh/api/scan.md | 69 +
docs/zh/api/stop-scan.md | 22 +
docs/zh/guide/capacitor.md | 21 +
docs/zh/guide/changelog.md | 7 +
docs/zh/guide/errcode.md | 14 +
docs/zh/guide/index.md | 40 +
docs/zh/guide/quickstart.md | 24 +
docs/zh/guide/thanks.md | 10 +
docs/zh/guide/troubleshooting.md | 9 +
docs/zh/index.md | 35 +
package-lock.json | 1884 ++++++++++++++++++++++
package.json | 10 +
43 files changed, 2687 insertions(+)
create mode 100644 .github/workflows/deploy.yml
create mode 100644 .gitignore
create mode 100644 README.md
create mode 100644 README_zh.md
create mode 100644 docs/.vitepress/config.mts
create mode 100644 docs/.vitepress/configs/index.ts
create mode 100644 docs/.vitepress/configs/navbar/en.ts
create mode 100644 docs/.vitepress/configs/navbar/index.ts
create mode 100644 docs/.vitepress/configs/navbar/zh.ts
create mode 100644 docs/.vitepress/configs/sidebar/en.ts
create mode 100644 docs/.vitepress/configs/sidebar/index.ts
create mode 100644 docs/.vitepress/configs/sidebar/zh.ts
create mode 100644 docs/.vitepress/theme/Layout.vue
create mode 100644 docs/.vitepress/theme/index.ts
create mode 100644 docs/api/scan.md
create mode 100644 docs/api/stop-scan.md
create mode 100644 docs/guide/capacitor.md
create mode 100644 docs/guide/changelog.md
create mode 100644 docs/guide/errcode.md
create mode 100644 docs/guide/index.md
create mode 100644 docs/guide/quickstart.md
create mode 100644 docs/guide/thanks.md
create mode 100644 docs/guide/troubleshooting.md
create mode 100644 docs/index.md
create mode 100644 docs/public/images/android.png
create mode 100644 docs/public/images/barcode_logo.png
create mode 100644 docs/public/images/cordova_logo.png
create mode 100644 docs/public/images/ionic_logo.png
create mode 100644 docs/public/images/sponsor.svg
create mode 100644 docs/public/images/xcode-2.png
create mode 100644 docs/public/images/xcode-3.png
create mode 100644 docs/zh/api/scan.md
create mode 100644 docs/zh/api/stop-scan.md
create mode 100644 docs/zh/guide/capacitor.md
create mode 100644 docs/zh/guide/changelog.md
create mode 100644 docs/zh/guide/errcode.md
create mode 100644 docs/zh/guide/index.md
create mode 100644 docs/zh/guide/quickstart.md
create mode 100644 docs/zh/guide/thanks.md
create mode 100644 docs/zh/guide/troubleshooting.md
create mode 100644 docs/zh/index.md
create mode 100644 package-lock.json
create mode 100644 package.json
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..38bac48
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,36 @@
+name: Build app and deploy to aliyun
+on:
+ push:
+ branches:
+ - main
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 18
+ - name: npm install
+ run: npm install
+ # 运行构建脚本
+ - name: Build VitePress site
+ run: npm run docs:build
+ # 部署到阿里云
+ - name: Deploy to Aliyun
+ uses: easingthemes/ssh-deploy@main
+ env:
+ # 私钥
+ SSH_PRIVATE_KEY: ${{ secrets.BSF_SERVER_SECRET }}
+ # scp参数
+ ARGS: "-avzr --delete"
+ # 源目录,编译后生成的文件目录
+ SOURCE: "./docs/.vitepress/dist/"
+ # 服务器ip:换成你的服务器IP
+ REMOTE_HOST: "${{ secrets.BSF_SERVER_HOST }}"
+ # 用户
+ REMOTE_USER: "root"
+ # 目标地址 你在服务器上部署代码的地方
+ TARGET: "/www/byteee-fund-docs/cordova-plugin-barcode-scanner"
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5931d6f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+docs/.vitepress/cache
+node_modules
+.idea
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..226d0d4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,31 @@
+English | [中文](README_zh.md)
+
+
+# About the Project
+
+`cordova-plugin-barcode-scanner` is a Cordova plugin based on ZXing, designed for scanning QR codes, 1D barcodes, and other barcode formats.
+
+- [Home Page](https://byteee.fund/project/cordova-plugin-barcode-scanner)
+- [Documentation](https://byteee.fund/doc/cordova-plugin-barcode-scanner/)
+- [DEMO](https://github.com/byteee-fund/cordova-plugin-barcode-scanner-demo)
+
+## SDK Versions
+
+- Cordova 12.x
+- zxing-android-embedded: 4.3.0
+- ZXingObjC: 3.6.9
+
+## Features
+
+- ✅ Single scan
+- ✅ Continuous scan
+- ✅ UI customization support
+
+## Compatibility
+
+- ✅ Cordova
+- ✅ Ionic/Capacitor
+
+## License
+
+Apache 2.0
diff --git a/README_zh.md b/README_zh.md
new file mode 100644
index 0000000..521814d
--- /dev/null
+++ b/README_zh.md
@@ -0,0 +1,40 @@
+[English](README.md) | 中文
+
+# 关于项目
+
+`cordova-plugin-barcode-scanner` 是一款基于Zxing实现的二维码,一维码/条形码的cordova插件,。
+
+
+- [主页](https://byteee.fund/project/cordova-plugin-barcode-scanner)
+
+- [文档](https://byteee.fund/doc/cordova-plugin-barcode-scanner/)
+
+- [DEMO](https://github.com/byteee-fund/cordova-plugin-barcode-scanner-demo)
+
+
+## SDK版本
+
+- Cordova 12.x
+- zxing-android-embedded:4.3.0
+- ZXingObjC 3.6.9
+
+
+
+## 功能列表
+
+- ✅ 单次扫码
+
+- ✅ 连续扫码
+
+- ✅ 支持界面定制
+
+
+
+## 兼容性
+
+- ✅ Cordova
+- ✅ Ionic/Capacitor
+
+## 软件协议
+
+Apache 2.0
diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts
new file mode 100644
index 0000000..dae5d72
--- /dev/null
+++ b/docs/.vitepress/config.mts
@@ -0,0 +1,46 @@
+import { defineConfig } from 'vitepress'
+import {
+ navbarEn,
+ navbarZh,
+ sidebarEn,
+ sidebarZh,
+} from "./configs";
+
+// https://vitepress.dev/reference/site-config
+export default defineConfig({
+ title: "cordova-plugin-barcode-scanner",
+ description: "cordova plugin for barcode scanner ",
+ base: "/doc/cordova-plugin-barcode-scanner",
+ themeConfig: {
+ search: {
+ provider: 'local'
+ },
+ socialLinks: [
+ { icon: {svg:""}, link: 'https://byteee.fund/project/cordova-plugin-barcode-scanner' },
+ { icon: 'github', link: 'https://github.com/byteee-fund/cordova-plugin-barcode-scanner-doc' }
+ ],
+ footer: {
+ message: 'Apache 2.0 License.',
+ copyright: 'Copyright © 2024. BSF'
+ }
+ },
+ locales: {
+ root: {
+ label: 'English',
+ lang: 'en',
+ themeConfig: {
+ nav: navbarEn,
+ sidebar:sidebarEn
+ }
+ },
+ zh: {
+ label: '中文',
+ lang: 'zh',
+ themeConfig: {
+ nav: navbarZh,
+ sidebar:sidebarZh
+ }
+ },
+ },
+ lastUpdated: true
+})
diff --git a/docs/.vitepress/configs/index.ts b/docs/.vitepress/configs/index.ts
new file mode 100644
index 0000000..d1d110a
--- /dev/null
+++ b/docs/.vitepress/configs/index.ts
@@ -0,0 +1,2 @@
+export * from './navbar'
+export * from './sidebar'
\ No newline at end of file
diff --git a/docs/.vitepress/configs/navbar/en.ts b/docs/.vitepress/configs/navbar/en.ts
new file mode 100644
index 0000000..c4970e8
--- /dev/null
+++ b/docs/.vitepress/configs/navbar/en.ts
@@ -0,0 +1,26 @@
+import { DefaultTheme } from "vitepress"
+type NavItem = DefaultTheme.NavItem
+
+export const navbarEn: NavItem[] = [
+ {
+ text: 'Guide',
+ link: "/guide"
+ },
+ {
+ text: 'API',
+ items: [
+ {
+ text: "Scan",
+ link: "/api/login.md"
+ },
+ {
+ text: "StopScan",
+ link: "/api/stop-scan.md"
+ }
+ ],
+ },
+ {
+ text: 'Capacitor/Ionic',
+ link: "/guide/capacitor.md"
+ },
+]
\ No newline at end of file
diff --git a/docs/.vitepress/configs/navbar/index.ts b/docs/.vitepress/configs/navbar/index.ts
new file mode 100644
index 0000000..4d43fd6
--- /dev/null
+++ b/docs/.vitepress/configs/navbar/index.ts
@@ -0,0 +1,2 @@
+export * from './en'
+export * from './zh'
\ No newline at end of file
diff --git a/docs/.vitepress/configs/navbar/zh.ts b/docs/.vitepress/configs/navbar/zh.ts
new file mode 100644
index 0000000..302201b
--- /dev/null
+++ b/docs/.vitepress/configs/navbar/zh.ts
@@ -0,0 +1,26 @@
+import { DefaultTheme } from "vitepress"
+type NavItem = DefaultTheme.NavItem
+
+export const navbarZh: NavItem[] = [
+ {
+ text: '指南',
+ link: "/zh/guide/index.md"
+ },
+ {
+ text: 'API',
+ items: [
+ {
+ text: "扫码(scan)",
+ link: "/zh/api/scan.md"
+ },
+ {
+ text: "停止扫码(stopScan)",
+ link: "/zh/api/stop-scan.md"
+ }
+ ],
+ },
+ {
+ text: 'Capacitor/Ionic',
+ link: "/zh/guide/capacitor.md"
+ },
+]
\ No newline at end of file
diff --git a/docs/.vitepress/configs/sidebar/en.ts b/docs/.vitepress/configs/sidebar/en.ts
new file mode 100644
index 0000000..88d802e
--- /dev/null
+++ b/docs/.vitepress/configs/sidebar/en.ts
@@ -0,0 +1,35 @@
+import { DefaultTheme } from "vitepress"
+type Sidebar = DefaultTheme.Sidebar
+
+export const sidebarEn: Sidebar = {
+ '/guide': [
+ {
+ text: 'Guide',
+ items: [
+ {text: "About", link: "/guide/index.md"},
+ {text: "Quickstart", link: "/guide/quickstart.md"},
+ {text: "Capacitor/Ionic", link: "/guide/capacitor.md"},
+ {text: "Troubleshooting", link: "/guide/troubleshooting.md"},
+ {text: "Errcode", link: "/guide/errcode.md"},
+ {text: "Changelog", link: "/guide/changelog.md"},
+ {text: "Thanks", link: "/guide/thanks.md"}
+ ],
+ },
+ ],
+ '/api/': [
+ {
+ text: 'API',
+ items: [
+ {
+ text: "Scan",
+ link: "/api/scan.md"
+ },
+ {
+ text: "StopScan",
+ link: "/api/stop-scan.md"
+ },
+ ],
+ },
+ ],
+
+}
\ No newline at end of file
diff --git a/docs/.vitepress/configs/sidebar/index.ts b/docs/.vitepress/configs/sidebar/index.ts
new file mode 100644
index 0000000..4d43fd6
--- /dev/null
+++ b/docs/.vitepress/configs/sidebar/index.ts
@@ -0,0 +1,2 @@
+export * from './en'
+export * from './zh'
\ No newline at end of file
diff --git a/docs/.vitepress/configs/sidebar/zh.ts b/docs/.vitepress/configs/sidebar/zh.ts
new file mode 100644
index 0000000..8328a5f
--- /dev/null
+++ b/docs/.vitepress/configs/sidebar/zh.ts
@@ -0,0 +1,35 @@
+import { DefaultTheme } from "vitepress"
+type Sidebar = DefaultTheme.Sidebar
+
+export const sidebarZh: Sidebar = {
+ '/zh/guide/': [
+ {
+ text: '指南',
+ items: [
+ {text: "关于", link: "/zh/guide/index.md"},
+ {text: "快速开始", link: "/zh/guide/quickstart.md"},
+ {text: "Capacitor/Ionic", link: "/zh/guide/capacitor.md"},
+ {text: "常见问题", link: "/zh/guide/troubleshooting.md"},
+ {text: "错误码", link: "/zh/guide/errcode.md"},
+ {text: "更新日志", link: "/zh/guide/changelog.md"},
+ {text: "特别鸣谢", link: "/zh/guide/thanks.md"}
+ ],
+ },
+ ],
+ '/zh/api/': [
+ {
+ text: 'API',
+ items: [
+ {
+ text: "扫码(scan)",
+ link: "/zh/api/scan.md"
+ },
+ {
+ text: "停止扫码(stopScan)",
+ link: "/zh/api/stop-scan.md"
+ }
+ ],
+ },
+ ],
+
+}
\ No newline at end of file
diff --git a/docs/.vitepress/theme/Layout.vue b/docs/.vitepress/theme/Layout.vue
new file mode 100644
index 0000000..ec7eb10
--- /dev/null
+++ b/docs/.vitepress/theme/Layout.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
new file mode 100644
index 0000000..7494303
--- /dev/null
+++ b/docs/.vitepress/theme/index.ts
@@ -0,0 +1,8 @@
+// docs/.vitepress/theme/index.ts
+import DefaultTheme from 'vitepress/theme'
+import Layout from './Layout.vue'
+
+export default {
+ extends: DefaultTheme,
+ Layout
+}
\ No newline at end of file
diff --git a/docs/api/scan.md b/docs/api/scan.md
new file mode 100644
index 0000000..f618aa3
--- /dev/null
+++ b/docs/api/scan.md
@@ -0,0 +1,67 @@
+# Scan
+
+Supports both single scan and continuous scan modes.
+
+## Parameters
+
+| Property | Type | Default Value | Required | Description |
+| ------------------ | ------- | ------------- | -------- | --------------------------------------------------------------------------- |
+| mode | Int | - | Yes | Scan mode: 1 for single scan, 2 for continuous scan |
+| desiredFormats | String | null | No | Supported barcode formats. Pass `null` or leave it empty to support all formats |
+| prompt | String | | No | Text prompt displayed on the scan interface. |
+| cameraId | Int | 0 | No | Camera ID, 0 for rear camera, 1 for front camera |
+| beepEnabled | Boolean | false | No | Enables scanning sound |
+| timeout | Int | 5000 | No | Timeout duration for single scan (in milliseconds) |
+| barcodeImageEnabled| Boolean | false | No | Enables barcode image generation |
+| x | Int | 0 | No | x-coordinate for the scan interface display |
+| y | Int | 0 | No | y-coordinate for the scan interface display |
+| width | Int | 0 | No | Width of the scan interface |
+| height | Int | 0 | No | Height of the scan interface |
+
+
+## Example
+
+### Single Scan
+
+```javascript
+ window.BarcodeScanner.scan( {
+ mode: 1,
+ desiredFormats: "QR_CODE,UPC_A,UPC_E,EAN_8,EAN_13",
+ prompt: "请将条形码置于取景框内扫描",
+ cameraId: 0,
+ beepEnabled: true,
+ timeout: 10000,
+ barcodeImageEnabled: true
+ },
+ function (response) {
+ alert(JSON.stringify(response));
+ },
+ function (error) {
+ alert(JSON.stringify(error));
+ }
+);
+```
+
+
+
+### Continuous scan
+
+```javascript
+ window.BarcodeScanner.scan({
+ mode: 2,
+ desiredFormats: "CODE_128",
+ prompt: "请将条形码置于取景框内扫描",
+ cameraId: 0,
+ beepEnabled: true,
+ y: 0,
+ height: 300
+ },
+ function (response) {
+ console.log(JSON.stringify(response));
+ },
+ function (error) {
+ alert(JSON.stringify(error));
+ }
+);
+```
+
diff --git a/docs/api/stop-scan.md b/docs/api/stop-scan.md
new file mode 100644
index 0000000..cf2ce61
--- /dev/null
+++ b/docs/api/stop-scan.md
@@ -0,0 +1,23 @@
+# Stop Scan
+
+After opening the continuous scan interface, you can actively close the interface using this method.
+
+## Parameters
+
+None
+
+## Example
+
+```javascript
+ window.BarcodeScanner.stopScan(
+ function (response) {
+ alert(JSON.stringify(response));
+ },
+ function (error) {
+ alert(JSON.stringify(error));
+ }
+);
+```
+
+
+
diff --git a/docs/guide/capacitor.md b/docs/guide/capacitor.md
new file mode 100644
index 0000000..a07819f
--- /dev/null
+++ b/docs/guide/capacitor.md
@@ -0,0 +1,21 @@
+# Capacitor/Ionic
+
+## DEMO
+
+[Ionic7 Demo](https://github.com/byteee-fund/cordova-plugin-barcode-scanner-ionic7-demo)
+
+## Install the plugin
+
+```shell
+npm install ../cordova-plugin-barcode-scanner
+```
+
+### Modify AndroidManifest.xml
+
+Since Capacitor does not support Hook, you need to manually add the `tools` tag
+
+```xml
+ xmlns:tools="http://schemas.android.com/tools"
+```
+
+![img](/public/images/android.png)
diff --git a/docs/guide/changelog.md b/docs/guide/changelog.md
new file mode 100644
index 0000000..22c5768
--- /dev/null
+++ b/docs/guide/changelog.md
@@ -0,0 +1,7 @@
+# Changelog
+
+## 1.0.0 (2024-08-31)
+
+### Features
+
+- Implemented basic functionality.
diff --git a/docs/guide/errcode.md b/docs/guide/errcode.md
new file mode 100644
index 0000000..9de2e38
--- /dev/null
+++ b/docs/guide/errcode.md
@@ -0,0 +1,11 @@
+# Error Codes
+
+| Error Code | Description |
+| ---------- | ---------------------------- |
+| 1001 | API not initialized |
+| 1002 | Not installed |
+| 1003 | Failed to send request |
+| 1004 | Invalid parameters |
+| 1005 | Thread error |
+| 1006 | IO error (failed to read image or file) |
+| 1007 | Unsupported API |
diff --git a/docs/guide/index.md b/docs/guide/index.md
new file mode 100644
index 0000000..c57fc63
--- /dev/null
+++ b/docs/guide/index.md
@@ -0,0 +1,28 @@
+# About the Project
+
+`cordova-plugin-barcode-scanner` is a Cordova plugin based on ZXing, designed for scanning QR codes, 1D barcodes, and other barcode formats.
+
+- [Home Page](https://byteee.fund/project/cordova-plugin-barcode-scanner)
+- [Documentation](https://byteee.fund/doc/cordova-plugin-barcode-scanner/)
+- [DEMO](https://github.com/byteee-fund/cordova-plugin-barcode-scanner-demo)
+
+## SDK Versions
+
+- Cordova 12.x
+- zxing-android-embedded: 4.3.0
+- ZXingObjC: 3.6.9
+
+## Features
+
+- ✅ Single scan
+- ✅ Continuous scan
+- ✅ UI customization support
+
+## Compatibility
+
+- ✅ Cordova
+- ✅ Ionic/Capacitor
+
+## License
+
+Apache 2.0
diff --git a/docs/guide/quickstart.md b/docs/guide/quickstart.md
new file mode 100644
index 0000000..906b4b5
--- /dev/null
+++ b/docs/guide/quickstart.md
@@ -0,0 +1,23 @@
+# Quick Start
+
+## Development Environment
+
+- Android Studio
+- Xcode
+- Node
+- Cordova
+
+## Install the Plugin
+
+### Local Installation
+
+```shell
+cordova plugin add ../cordova-plugin-barcode-scanner
+```
+
+
+## Remove the Plugin
+
+```shell
+cordova plugin rm cordova-plugin-barcode-scanner
+```
diff --git a/docs/guide/thanks.md b/docs/guide/thanks.md
new file mode 100644
index 0000000..6d9a2e7
--- /dev/null
+++ b/docs/guide/thanks.md
@@ -0,0 +1,9 @@
+# Special Thanks
+
+This plugin is implemented based on the following libraries. We are grateful for the skills of the original creators and maintainers.
+
+[zxing](https://github.com/zxing/zxing)
+
+[zxing-android-embedded](https://github.com/journeyapps/zxing-android-embedded)
+
+[zxingify-objc](https://github.com/zxingify/zxingify-objc)
diff --git a/docs/guide/troubleshooting.md b/docs/guide/troubleshooting.md
new file mode 100644
index 0000000..6e284b8
--- /dev/null
+++ b/docs/guide/troubleshooting.md
@@ -0,0 +1,8 @@
+# Frequently Asked Questions (FAQ)
+
+## Slow Barcode Scanning Speed
+
+You can improve the scanning speed by adjusting the following:
+
+1. If possible, specify the barcode format or order.
+2. Disable the camera's autofocus.
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..f639b96
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,35 @@
+---
+# https://vitepress.dev/reference/default-theme-home-page
+layout: home
+
+hero:
+ name: cordova-plugin-barcode-scanner
+ tagline: Cordova plugin supporting barcode and QR code scanning
+ actions:
+ - theme: alt
+ text: ⚡ Get Started
+ link: /guide/quickstart
+ - theme: brand
+ text: ❤️ Sponsor
+ link: https://byteee.fund/project/cordova-plugin-barcode-scanner
+
+features:
+ - icon:
+ src: /images/cordova_logo.png
+ alt: cordova logo
+ title: Latest Cordova Framework
+ details: Built on the latest Cordova Android and iOS frameworks.
+ - icon:
+ src: /images/barcode_logo.png
+ alt: barcode-scanner logo
+ title: Multiple Scanning Modes
+ details: Supports both single and continuous scanning modes.
+ - icon:
+ src: /images/ionic_logo.png
+ alt: ionic logo
+ title: Compatible with Ionic/Capacitor Projects
+ details: Fully compatible with the latest Ionic/Capacitor projects.
+---
+
+
diff --git a/docs/public/images/android.png b/docs/public/images/android.png
new file mode 100644
index 0000000000000000000000000000000000000000..94c541dd57b77f9447bcafb84b4b7508570b4d9c
GIT binary patch
literal 190545
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