跳过主要内容

罗盘 Capacitor 插件

以每秒度为单位连续更新罗盘指向角度,并处理权限

安装

bun add @capgo/capacitor-compass bunx cap sync
npm, pnpm 或 yarn
  • npm install @capgo/capacitor-compass
  • pnpm add @capgo/capacitor-compass
  • yarn add @capgo/capacitor-compass

指南

如何使用 Compass 在 Capacitor 中

在设备上测试

下载 Capgo 应用程序,然后扫描二维码 code。

Compass 插件预览二维码 code

使用 @capgo/capacitor-compass

Capacitor Compass 插件接口,用于读取设备指南针方向

安装

bun add @capgo/capacitor-compass
bunx cap sync

bunx cap sync 将插件的本机code复制到您的本机项目中。每次升级插件后,请再次运行它。

导入

import { CapgoCompass } from '@capgo/capacitor-compass';

API一目了然

方法 描述
getCurrentHeading 获取当前compass方向(度数)。在iOS中,方向会在后台更新,返回最新值。在Android中,方法调用时使用加速计和磁力计传感器计算方向。未在Web中实现。
startListening 开始监听compass方向变化事件。该方法启动compass传感器并发射'headingChange'事件。
stopListening 停止监听compass方向变化事件。该方法停止compass传感器并停止发射事件。
checkPermissions 检查当前访问compass数据的权限状态。在iOS中,检查位置权限状态。在Android中,该方法始终返回'granted',因为不需要权限。
requestPermissions 请求访问compass数据的权限。在iOS中,该方法请求位置权限(用于获取方向数据)。在Android中,该方法立即解决,因为不需要权限。
watchAccuracy 开始监测compass精度。在Android中,该方法监测磁力计精度并发射accuracyChange事件。开发者可以监听这些事件并实现自己的UI提示用户进行校准。在iOS和Web中,该方法什么也不做,因为compass精度监测不可用。
unwatchAccuracy 停止监测compass精度。该方法停止精度监测。
getAccuracy 获取当前compass精度级别。 在Android上,返回当前磁力计传感器精度。 在iOS和Web上,始终返回CompassAccuracy.UNKNOWN,因为精度监控不可用。

示例

getCurrentHeading()

获取当前compass方向(角度)。 在iOS上,方向会在后台更新,返回最新值。 在Android上,方向会在调用方法时使用加速度计和磁力计传感器计算。 未在Web上实现。

import { CapgoCompass } from '@capgo/capacitor-compass';

const { value } = await CapgoCompass.getCurrentHeading();
console.log('Compass heading:', value, 'degrees');

startListening()

开始监听compass方向变化事件。 这会启动compass传感器并发射'headingChange'事件。

import { CapgoCompass } from '@capgo/capacitor-compass';

// With default throttling (100ms interval, 2° minimum change)
await CapgoCompass.startListening();

// With custom throttling for high-frequency updates
await CapgoCompass.startListening({
  minInterval: 50,      // 50ms between events
  minHeadingChange: 1.0 // 1° minimum change
});

CapgoCompass.addListener('headingChange', (event) => {
  console.log('Heading:', event.value);
});

stopListening()

停止监听compass方向变化事件。 这会停止compass传感器并停止发射事件。

import { CapgoCompass } from '@capgo/capacitor-compass';

await CapgoCompass.stopListening();

checkPermissions()

检查当前访问compass数据的权限状态。 在iOS上,检查位置权限状态。 在Android上,始终返回'granted',因为无需权限。

import { CapgoCompass } from '@capgo/capacitor-compass';

const status = await CapgoCompass.checkPermissions();
console.log('Compass permission:', status.compass);

requestPermissions()

请求访问compass数据的权限。 在iOS上,请求位置权限(用于获取方向数据)。 在Android上,立即返回,因为无需权限。

import { CapgoCompass } from '@capgo/capacitor-compass';

const status = await CapgoCompass.requestPermissions();
if (status.compass === 'granted') {
  // Can now use compass
}

watchAccuracy()

开始监控compass精度。 在Android上,监控磁力计精度并发射accuracyChange事件。 开发者可以监听这些事件并实现自己的UI提示用户进行校准。 在iOS和Web上,这个方法什么也不做,因为compass精度监控不可用。

import { CapgoCompass, CompassAccuracy } from '@capgo/capacitor-compass';

// Start monitoring accuracy
await CapgoCompass.watchAccuracy();

// Listen for accuracy changes and implement custom UI
CapgoCompass.addListener('accuracyChange', (event) => {
  console.log('Accuracy changed to:', event.accuracy);
  if (event.accuracy < CompassAccuracy.MEDIUM) {
    // Show your custom calibration UI
  }
});

上表列出了 8 个核心方法。监听器和版本助手,以及每个方法的完整契约,均在 GitHub 仓库.

监听事件

addListener 返回一个句柄。调用 handle.remove() 当屏幕卸载时,或 CapgoCompass.removeAllListeners() 清除所有监听器。

完整参考

继续使用 @capgo/capacitor Compass

如果您正在使用 使用@capgo/capacitor-compass 规划API仪表板和操作,连接它 @capgo/capacitor-compass 了解@capgo/capacitor-compass的实现细节 开始使用 了解开始使用的实现细节 API概述 了解API概述的实现细节 介绍 了解介绍的实现细节 API密钥 了解API密钥的实现细节

FAQ

常见问题解答(context: Capgo Builder / native cloud build product page. 角色: Section subtitle or tagline. 见于: page native-build.astro. Message key `native_build_builder_faq_eyebrow` (Native Build Builder FAQ Eyebrow). | Page/area: Capgo solutions marketing page. 角色: Section or page heading. 见于: page solutions/cordova-to-capacitor.astro. Message key `solutions_cordova_to_capacitor_faq_title` (Solutions Cordova To Capacitor FAQ Title). )

如何在Capacitor应用中安装 Compass 插件?

运行"bun add @capgo/capacitor-compass" (或 "npm install @capgo/capacitor-compass" ),然后运行 "bunx cap sync" 以便 iOS 和 Android 项目能够接收到原生 code。从 "@capgo/capacitor-compass" 中导入它到您的应用 code 中。

是否支持 @capgo/capacitor-compass 与 React、Vue 和 Angular 一起使用?

是的。Compass 是一个 Capacitor 包,因此它可以与任何在 Capacitor 内运行的 Web 框架一起使用,包括 Ionic、React、Vue、Angular、Svelte 和普通的 JavaScript。

哪个 Capacitor 版本支持 @capgo/capacitor-compass?

Capgo 插件遵循 Capacitor 的主要版本:使用与您的 Capacitor 主要版本匹配的插件主要版本(例如插件 v8 与 Capacitor 8)。在 GitHub README 中的兼容性表格中列出了维护的版本。

是否支持 @capgo/capacitor-compass 免费和开源?

是的。源 code 公开在 GitHub 上,https://github.com/Cap-go/capacitor-compass/,并且该包可以从 npm 免费安装。欢迎 bug 报告和 pull 请求。

是否可以在不经过 App Store 审核的情况下更新使用 Compass 的 code?

安装或升级插件会更改原生 code,因此需要一个新的商店构建。之后,JavaScript、HTML 和 CSS 的更改可以立即通过 Capgo 的实时更新发布。

不必等待应用程序审查就可以将 Compass 的更新推送给用户

一旦插件在您的商店中构建完成,Capgo 即刻推送您的 JavaScript、HTML 和 CSS 更改到用户中

开始使用 Capgo