Saltar al contenido

Comenzar con Barometer

Esta guía te llevará a través de la integración del Plugin Capacitor Barometer en tu aplicación.

Instala el Plugin usando npm:

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

Agrega lo siguiente a tu Info.plist:

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

No se requiere configuración adicional. El Plugin solicita automáticamente los permisos necesarios.

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 // Intervalo de actualización en milisegundos
});
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');
};

Aquí hay un ejemplo completo mostrando la integración del barómetro:

import { Barometer } from '@capgo/capacitor-barometer';
class BarometerService {
private listener: any;
async initialize() {
// Verificar disponibilidad
const { available } = await Barometer.isAvailable();
if (!available) {
console.error('Barometer not available on this device');
return;
}
// Iniciar monitoreo
await Barometer.start({ interval: 1000 });
// Agregar listener
this.listener = Barometer.addListener('pressureChange', (data) => {
this.handlePressureChange(data);
});
}
handlePressureChange(data: any) {
console.log('Pressure:', data.pressure, 'hPa');
console.log('Altitude:', data.relativeAltitude, 'm');
// Actualizar UI o procesar datos
this.updateDisplay(data);
}
updateDisplay(data: any) {
// Convertir hPa a otras unidades
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() {
// Eliminar listener
if (this.listener) {
this.listener.remove();
}
// Detener monitoreo
await Barometer.stop();
}
}
// Uso
const barometerService = new BarometerService();
barometerService.initialize();
// Limpieza cuando termine
// barometerService.cleanup();
  • Medida en hectopascales (hPa) o milibares (mb)
  • Presión estándar al nivel del mar: 1013.25 hPa
  • Mayor altitud = menor presión
  • Los sistemas meteorológicos afectan las lecturas de presión
  • Calculada a partir de cambios de presión
  • Relativa al punto de referencia inicial
  • Precisión: ±10-30 metros
  • Funciona mejor para seguimiento a corto plazo
  1. Verificar Disponibilidad: Siempre verifica la disponibilidad del sensor antes de usarlo
  2. Intervalos Razonables: No consultes con demasiada frecuencia (1000ms es bueno)
  3. Eliminar Listeners: Limpia los listeners cuando no sean necesarios
  4. Calibración: Usa altitud conocida para lecturas precisas
  5. Impacto en Batería: Monitorea el uso de batería con detección continua
try {
const { available } = await Barometer.isAvailable();
if (!available) {
// Alternativa a altitud GPS o entrada manual
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();
}
// Devolver promedio móvil
const sum = this.readings.reduce((a, b) => a + b, 0);
return sum / this.readings.length;
}
}