Vai al contenuto

Iniziare con Barometer

Questa guida ti guiderà attraverso l’integrazione del plugin Capacitor Barometer nella tua applicazione.

Installa il plugin usando npm:

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

Aggiungi quanto segue al tuo Info.plist:

<key>NSMotionUsageDescription</key>
<string>Questa app usa il barometro per misurare la pressione atmosferica</string>

Non è richiesta alcuna configurazione aggiuntiva. Il plugin richiede automaticamente i permessi necessari.

import { Barometer } from '@capgo/capacitor-barometer';
const checkBarometer = async () => {
const { available } = await Barometer.isAvailable();
console.log('Barometro disponibile:', available);
};
const startMonitoring = async () => {
await Barometer.start({
interval: 1000 // Intervallo di aggiornamento in millisecondi
});
console.log('Monitoraggio barometro iniziato');
};
Barometer.addListener('pressureChange', (data) => {
console.log('Pressione (hPa):', data.pressure);
console.log('Altitudine relativa (m):', data.relativeAltitude);
console.log('Timestamp:', data.timestamp);
});
const getCurrentPressure = async () => {
const reading = await Barometer.getCurrentReading();
console.log('Pressione corrente:', reading.pressure, 'hPa');
console.log('Altitudine relativa:', reading.relativeAltitude, 'm');
};
const stopMonitoring = async () => {
await Barometer.stop();
console.log('Monitoraggio barometro fermato');
};

Ecco un esempio completo che mostra l’integrazione del barometro:

import { Barometer } from '@capgo/capacitor-barometer';
class BarometerService {
private listener: any;
async initialize() {
// Controlla disponibilità
const { available } = await Barometer.isAvailable();
if (!available) {
console.error('Barometro non disponibile su questo dispositivo');
return;
}
// Inizia monitoraggio
await Barometer.start({ interval: 1000 });
// Aggiungi listener
this.listener = Barometer.addListener('pressureChange', (data) => {
this.handlePressureChange(data);
});
}
handlePressureChange(data: any) {
console.log('Pressione:', data.pressure, 'hPa');
console.log('Altitudine:', data.relativeAltitude, 'm');
// Aggiorna UI o elabora dati
this.updateDisplay(data);
}
updateDisplay(data: any) {
// Converti hPa in altre unità
const inHg = (data.pressure * 0.02953).toFixed(2);
const mmHg = (data.pressure * 0.750062).toFixed(1);
console.log(`Pressione: ${data.pressure.toFixed(1)} hPa`);
console.log(` ${inHg} inHg`);
console.log(` ${mmHg} mmHg`);
console.log(`Altitudine: ${data.relativeAltitude.toFixed(1)} m`);
}
async cleanup() {
// Rimuovi listener
if (this.listener) {
this.listener.remove();
}
// Ferma monitoraggio
await Barometer.stop();
}
}
// Utilizzo
const barometerService = new BarometerService();
barometerService.initialize();
// Pulizia quando fatto
// barometerService.cleanup();
  • Misurata in ettopascal (hPa) o millibar (mb)
  • Pressione standard a livello del mare: 1013.25 hPa
  • Altitudine più alta = pressione più bassa
  • I sistemi meteorologici influenzano le letture di pressione
  • Calcolata dai cambiamenti di pressione
  • Relativa al punto di riferimento di partenza
  • Accuratezza: ±10-30 metri
  • Funziona meglio per tracciamento a breve termine
  1. Controlla Disponibilità: Verifica sempre la disponibilità del sensore prima dell’uso
  2. Intervalli Ragionevoli: Non interrogare troppo frequentemente (1000ms è buono)
  3. Rimuovi Listener: Pulisci i listener quando non necessari
  4. Calibrazione: Usa altitudine conosciuta per letture accurate
  5. Impatto Batteria: Monitora l’uso della batteria con rilevamento continuo
try {
const { available } = await Barometer.isAvailable();
if (!available) {
// Fallback su altitudine GPS o input manuale
showAlternativeMethod();
}
} catch (error) {
console.error('Controllo barometro fallito:', 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();
}
// Ritorna media mobile
const sum = this.readings.reduce((a, b) => a + b, 0);
return sum / this.readings.length;
}
}