{"_id":"@capacitor-ohos/motion","_rev":"2-dc001b6b7e8a6273b00295ec03bd1433","name":"@capacitor-ohos/motion","dist-tags":{"latest":"8.0.1"},"versions":{"8.0.0":{"name":"@capacitor-ohos/motion","version":"8.0.0","keywords":["capacitor","plugin","native"],"author":{"url":"Group","name":"Huawei Device Co., Ltd and iSoftStone Information Technology"},"license":"MIT","_id":"@capacitor-ohos/motion@8.0.0","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-motion/issues"},"dist":{"shasum":"ae057db4d01e374a48e4394d14bfeaf0e8c0821f","tarball":"https://registry.npmjs.org/@capacitor-ohos/motion/-/motion-8.0.0.tgz","fileCount":10,"integrity":"sha512-Ih17xdz7pxozsmB+6qVPzk4k2SO9ApNCqpLiNsPLtlQpx4awv6+FOZN1TlRz/1P1cJ0I0FtZkBdmS9/Vtk160A==","signatures":[{"sig":"MEUCIFuvJdU/4C7zcoeerPY87h/37ZsySwRc+biojg6h3vcCAiEAwEueUdSvcS6raH9O1hS5b+na0VS6ToSLQQiAlotiwjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36637},"gitHead":"f9308c88000212b77de012f763f8524aaecfadbe","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"capacitor":{"id":"@capacitor/motion","platforms":["openharmony"]},"repository":{"url":"gitcode:CPF-Ionic/capacitor-motion","type":"git"},"_npmVersion":"10.5.1","description":"The Motion API tracks accelerometer and device orientation (compass heading, etc.)","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/motion_8.0.0_1777546324845_0.08473925618051292","host":"s3://npm-registry-packages-npm-production"}},"8.0.1":{"name":"@capacitor-ohos/motion","version":"8.0.1","description":"The Motion API tracks accelerometer and device orientation (compass heading, etc.)","capacitor":{"id":"@capacitor/motion","platforms":["openharmony"]},"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-motion"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-motion/issues"},"keywords":["capacitor","plugin","native"],"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","_id":"@capacitor-ohos/motion@8.0.1","gitHead":"5afb9e94e35822116fc6d2390d3467d5a25da63e","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-wR0tWEP8p94gYH0t0x4TJlWO7FNo6184dwxdjRaKS/VnhHJU+ouojhgzNXVoiVB2Y9gn2ExVaztJQLYYzwR9gQ==","shasum":"4388f6f4b7f6f1566da4643f9a4fd0020501e70e","tarball":"https://registry.npmjs.org/@capacitor-ohos/motion/-/motion-8.0.1.tgz","fileCount":10,"unpackedSize":36661,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCpEkrdwjNh4QWiqw9lBFZYFQrncardosNOojJfMifxcwIhAOMAR4KAaMfxuodpxBA8Nitcdyk4QeSLk5dyEjy8Ynl8"}]},"_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/motion_8.0.1_1784796304266_0.4016473332947166"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T10:52:04.744Z","modified":"2026-07-23T08:45:04.529Z","8.0.0":"2026-04-30T10:52:04.986Z","8.0.1":"2026-07-23T08:45:04.384Z"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-motion/issues"},"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","keywords":["capacitor","plugin","native"],"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-motion"},"description":"The Motion API tracks accelerometer and device orientation (compass heading, etc.)","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"readme":"# <center>`@capacitor/motion`</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/motion@8.0.0](https://www.npmjs.com/package/@capacitor/motion) 开发。\r\n\r\n## 简介\r\n\r\nMotion API 提供了追踪加速度计和设备方向（指南针方位等）的能力。本插件是 capacitor 生态系统中的核心插件，为跨平台应用开发提供设备差异化适配能力，兼容 capacitor 的 Android、iOS 等主流移动平台及浏览器环境中使用，本文档仅说明在 OpenHarmony 系统中的使用情况。\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/motion\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/motion\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` 项，找到 `entry` 模块中 `capacitor.plugins.json` 文件，并根据 `param` 标签添加配置如下：\r\n\r\n```json\r\n{\r\n  \"pkg\": \"@capacitor/motion\",\r\n  \"classpath\": \"Motion\"\r\n}\r\n```\r\n\r\n#### 2. 修改 CMake 配置\r\n\r\n根据 `plugin.xml` 的 `CMakeLists` 项，找到 `capacitor` 模块，路径为 `target` 字段的 `CMakeLists.txt` 文件，并添加 `add_subdirectory` 和 `target_link_libraries` 如下：\r\n\r\n```cmake\r\nadd_subdirectory(Motion)\r\n\r\n// ...\r\n\r\ntarget_link_libraries(capacitor PUBLIC\r\n  \"-Wl,--whole-archive\" // 放在这个中间\r\n  // ...\r\n  Motion\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` 字段找到需要复制的文件，并复制到对应的目录：\r\n\r\n将源码中 src/main/cpp/Motion 目录下的 Motion.h、Motion.cpp、CMakeLists.txt 文件引入到 capacitor 模块中 src/main/cpp/Motion 目录下。\r\n\r\n将源码中 src/main/ets/components/Motion 目录下的 Motion.ets 文件引入到 capacitor 模块中 src/main/ets/components/Motion 目录下。\r\n\r\n在 `capacitor` 模块的 `build-profile.json5` 文件中，`buildOption/arkOptions/runtimeOnly/sources` 配置项数组中加入拷贝的 ets 文件路径：\r\n\r\n```json\r\n\"buildOption\": {\r\n  // ...\r\n  \"arkOptions\": {\r\n    \"runtimeOnly\": {\r\n      \"sources\": [\r\n        // ...\r\n        \"./src/main/ets/components/Motion/Motion.ets\"\r\n        // ...\r\n      ]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## 卸载\r\n\r\n```bash\r\n# 卸载 motion 插件\r\nhionic plugin remove @capacitor/motion\r\n```\r\n\r\n## 约束与限制\r\n\r\n### 兼容性\r\n\r\n在以下版本中已测试通过：\r\n\r\n1. 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` 添加 `ohos.permission.ACCELEROMETER` 和 `ohos.permission.GYROSCOPE` 权限，示例如下：\r\n\r\n```json\r\n{\r\n  \"name\": \"ohos.permission.ACCELEROMETER\"\r\n},\r\n{\r\n  \"name\": \"ohos.permission.GYROSCOPE\"\r\n}\r\n```\r\n\r\n更多权限说明参考：[申请应用权限](https://docs.openharmony.cn/pages/v6.0/zh-cn/device-dev/subsystems/subsys-security-rightmanagement.md)。\r\n\r\n## 使用示例\r\n\r\n### 基础示例：监听加速度计数据\r\n\r\n```typescript\r\nimport { Motion } from '@capacitor/motion';\r\n\r\nawait Motion.addListener('accel', (event) => {\r\n  // 构建详细的消息，包含所有相关属性\r\n  let message = `[实时数据] `;\r\n  // 添加加速度数据（不包括重力）\r\n  message += `加速度: x=${event.acceleration.x.toFixed(3)}, y=${event.acceleration.y.toFixed(3)}, z=${event.acceleration.z.toFixed(3)} | `;\r\n  // 添加重力加速度数据\r\n  message += `重力加速度: x=${event.accelerationIncludingGravity.x.toFixed(3)}, y=${event.accelerationIncludingGravity.y.toFixed(3)}, z=${event.accelerationIncludingGravity.z.toFixed(3)} | `;\r\n  // 添加旋转速率数据\r\n  message += `旋转速率: alpha=${event.rotationRate.alpha?.toFixed(3) || 0}, beta=${event.rotationRate.beta?.toFixed(3) || 0}, gamma=${event.rotationRate.gamma?.toFixed(3) || 0}`;\r\n  console.log(message);\r\n});\r\n```\r\n\r\n## 使用说明\r\n\r\n### 接口方法\r\n\r\n| 方法名                                                       | 返回类型                  | 描述                                 |\r\n| ------------------------------------------------------------ | ------------------------- | ------------------------------------ |\r\n| addListener(eventName: 'accel', listenerFunc: [AccelListener](#accellistener]) | Promise&lt;[PluginListenerHandle](#pluginlistenerhandle)&gt; | 添加一个监听器以获取加速度计数据         |\r\n| addListener(eventName: 'orientation', listenerFunc: [OrientationListener](#orientationlistener]) | Promise&lt;[PluginListenerHandle](#pluginlistenerhandle)&gt; | 添加监听器以监听设备方向（指南针航向等） |\r\n| removeAllListeners()                                        | Promise<void>           | 移除所有绑定到该插件的监听器。            |\r\n\r\n### 数据结构\r\n\r\n#### PluginListenerHandle\r\n\r\n| 属性名      | 类型                  |\r\n| ----------- | --------------------- |\r\n| remove | () => Promise&lt;void&gt; |\r\n\r\n#### AccelListenerEvent\r\n\r\n| 属性名                          | 类型           | 描述                                                               |\r\n| ------------------------------- | -------------- | ------------------------------------------------------------------ |\r\n| acceleration                | Acceleration | 物体在三轴 X、Y 和 Z 上的加速度。加速度以 m/s² 表示。                |\r\n| accelerationIncludingGravity | Acceleration | 物体在三轴 X、Y 和 Z 上的加速度（包含重力影响）。加速度以 m/s² 表示。 |\r\n| rotationRate                | RotationRate | 设备在三轴 α、β 和 γ 上的方向变化速率。旋转速率以每秒度数表示。       |\r\n| interval                    | number       | 从设备获取数据的时间间隔（以毫秒为单位）。                           |\r\n\r\n#### Acceleration\r\n\r\n| 属性名    | 类型      | 描述             |\r\n| --------- | --------- | ---------------- |\r\n| x     | number  | X 轴上的加速度。 |\r\n| y     | number  | Y 轴上的加速度。 |\r\n| z     | number  | Z 轴上的加速度。 |\r\n\r\n#### RotationRate\r\n\r\n| 属性名    | 类型      | 描述                              |\r\n| --------- | --------- | --------------------------------- |\r\n| alpha | number  | 绕 Z 轴旋转的量，单位是每秒度数。 |\r\n| beta  | number  | 绕 X 轴旋转的量，单位是每秒度数。 |\r\n| gamma | number  | 绕 Y 轴旋转的量，单位是每秒度数。 |\r\n\r\n### 类型\r\n\r\n#### AccelListener\r\n`(event: AccelListenerEvent): void`\r\n\r\n#### OrientationListener\r\n`(event: RotationRate): void`\r\n\r\n#### OrientationListenerEvent\r\n`RotationRate`\r\n\r\n## 目录结构\r\n\r\n```\r\n|---- 项目根目录\r\n|     |---- src\r\n|           |---- main\r\n|                 |---- cpp\r\n|                       |---- Motion   # 插件核心 C++ 实现\r\n|                             |---- Motion.h\r\n|                             |---- Motion.cpp\r\n|                             |---- CMakeLists.txt\r\n|                 |---- ets\r\n|                       |---- components\r\n|                             |---- Motion   # 插件核心 ArkTS 实现\r\n|                                   |---- Motion.ets\r\n|     |---- README.md          # 说明文档\r\n|     |---- package.json       # npm 配置文件\r\n|     |---- plugin.xml         # capacitor 插件配置\r\n|     |---- LICENSE            # 许可证文件\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Ionic/capacitor-motion/issues)，当然，也非常欢迎发 [PR](https://gitcode.com/CPF-Ionic/capacitor-motion/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **MIT License** 开源，详见 [LICENSE](./LICENSE) 文件。\r\n","readmeFilename":"README.md"}