跳转到内容

Barometer 入门指南

本指南将引导您完成将 Capacitor Barometer 插件集成到应用中的过程。

使用 npm 安装插件:

Terminal window
npm install @capgo/capacitor-barometer
npx cap sync

将以下内容添加到 Info.plist

<key>NSMotionUsageDescription</key>
<string>This app uses the barometer to measure atmospheric pressure</string>

无需额外配置。插件会自动请求必要的权限。

import { Barometer } from '@capgo/capacitor-barometer';
const checkBarometer = async () => {
const { available } = await Barometer.isAvailable();
console.log('Barometer available:', available);
};
const startMonitoring = async () => {
await Barometer.start({
interval: 1000 // 更新间隔(毫秒)
});
console.log('Barometer monitoring started');
};
Barometer.addListener('pressureChange', (data) => {
console.log('Pressure (hPa):', data.pressure);
console.log('Relative altitude (m):', data.relativeAltitude);
console.log('Timestamp:', data.timestamp);
});
const getCurrentPressure = async () => {
const reading = await Barometer.getCurrentReading();
console.log('Current pressure:', reading.pressure, 'hPa');
console.log('Relative altitude:', reading.relativeAltitude, 'm');
};
const stopMonitoring = async () => {
await Barometer.stop();
console.log('Barometer monitoring stopped');
};

这是一个显示气压计集成的完整示例:

import { Barometer } from '@capgo/capacitor-barometer';
class BarometerService {
private listener: any;
async initialize() {
// 检查可用性
const { available } = await Barometer.isAvailable();
if (!available) {
console.error('Barometer not available on this device');
return;
}
// 开始监测
await Barometer.start({ interval: 1000 });
// 添加监听器
this.listener = Barometer.addListener('pressureChange', (data) => {
this.handlePressureChange(data);
});
}
handlePressureChange(data: any) {
console.log('Pressure:', data.pressure, 'hPa');
console.log('Altitude:', data.relativeAltitude, 'm');
// 更新 UI 或处理数据
this.updateDisplay(data);
}
updateDisplay(data: any) {
// 将 hPa 转换为其他单位
const inHg = (data.pressure * 0.02953).toFixed(2);
const mmHg = (data.pressure * 0.750062).toFixed(1);
console.log(`Pressure: ${data.pressure.toFixed(1)} hPa`);
console.log(` ${inHg} inHg`);
console.log(` ${mmHg} mmHg`);
console.log(`Altitude: ${data.relativeAltitude.toFixed(1)} m`);
}
async cleanup() {
// 移除监听器
if (this.listener) {
this.listener.remove();
}
// 停止监测
await Barometer.stop();
}
}
// 使用
const barometerService = new BarometerService();
barometerService.initialize();
// 完成后清理
// barometerService.cleanup();
  • 以百帕 (hPa) 或毫巴 (mb) 为单位测量
  • 标准海平面气压:1013.25 hPa
  • 海拔越高 = 气压越低
  • 天气系统影响气压读数
  • 从气压变化计算得出
  • 相对于起始参考点
  • 精度:±10-30 米
  • 最适合短期跟踪
  1. 检查可用性:使用前始终验证传感器可用性
  2. 合理间隔:不要轮询太频繁(1000ms 比较好)
  3. 移除监听器:不需要时清理监听器
  4. 校准:使用已知高度进行准确读数
  5. 电池影响:持续感应时监控电池使用情况
try {
const { available } = await Barometer.isAvailable();
if (!available) {
// 回退到 GPS 高度或手动输入
showAlternativeMethod();
}
} catch (error) {
console.error('Barometer check failed:', error);
}
class PressureFilter {
private readings: number[] = [];
private maxReadings = 5;
addReading(pressure: number): number {
this.readings.push(pressure);
if (this.readings.length > this.maxReadings) {
this.readings.shift();
}
// 返回移动平均值
const sum = this.readings.reduce((a, b) => a + b, 0);
return sum / this.readings.length;
}
}