Skip to content

@capawesome-team/capacitor-barometer

Capacitor plugin to obtain the static air pressure, which is measured in hectopascals (hPa).

Features

We are proud to offer one of the most complete and feature-rich Capacitor plugins for barometer measurements. Here are some of the key features:

  • 🖥️ Cross-platform: Supports Android and iOS.
  • 📏 Precise Measurements: Get accurate air pressure readings in hectopascals (hPa).
  • 🔄 Real-time Updates: Continuously monitor barometer changes with event listeners.
  • 🔍 Device Detection: Check if barometer sensor is available on the device.
  • 🔑 Permissions: Check and request barometer sensor permissions.
  • 📊 Additional Data: Get relative altitude measurements.
  • ⏱️ Timestamps: Each measurement includes precise timing information.
  • 📦 SPM: Supports Swift Package Manager for iOS.
  • 🔁 Up-to-date: Always supports the latest Capacitor version.
  • ⭐️ Support: Priority support from the Capawesome Team.

Missing a feature? Just open an issue and we'll take a look!

Compatibility

Plugin Version Capacitor Version Status
7.x.x >=7.x.x Active support

Installation

This plugin is only available to Capawesome Insiders. First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands:

npm config set @capawesome-team:registry https://npm.registry.capawesome.io
npm config set //npm.registry.capawesome.io/:_authToken <YOUR_LICENSE_KEY>

Attention: Replace <YOUR_LICENSE_KEY> with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a Capawesome Insider.

Next, install the package:

npm install @capawesome-team/capacitor-barometer
npx cap sync

iOS

Privacy Descriptions

Add the NSMotionUsageDescription key to the ios/App/App/Info.plist file, which tells the user why your app needs access to the user's contacts:

<key>NSMotionUsageDescription</key>
<string>The app needs to access the motion activity.</string>

Usage

import { Barometer } from '@capawesome-team/capacitor-barometer';

const getMeasurement = async () => {
  const { measurement } = await Barometer.getMeasurement();
  console.log('Pressure:', measurement.pressure, 'hPa');
  console.log('Relative Altitude:', measurement.relativeAltitude, 'm');
  console.log('Timestamp:', new Date(measurement.timestamp));
};

const isAvailable = async () => {
  const result = await Barometer.isAvailable();
  console.log('Barometer is available:', result.isAvailable);
};

const startMeasurementUpdates = async () => {
  Barometer.addListener('measurement', (event) => {
    console.log('New measurement:', event);
  });
  await Barometer.startMeasurementUpdates();
};

const stopMeasurementUpdates = async () => {
  await Barometer.stopMeasurementUpdates();
  Barometer.removeAllListeners();
};

const checkPermissions = async () => {
  const status = await Barometer.checkPermissions();
  console.log('Barometer permission status:', status.barometer);
};

const requestPermissions = async () => {
  const status = await Barometer.requestPermissions();
  console.log('Barometer permission status after request:', status.barometer);
};

API

getMeasurement()

getMeasurement() => Promise<GetMeasurementResult>

Get the latest measurement.

This method returns the most recent measurement from the barometer sensor.

Only available on Android and iOS.

Returns: Promise<Measurement>

Since: 7.0.0


isAvailable()

isAvailable() => Promise<IsAvailableResult>

Check if the barometer sensor is available on the device.

Returns: Promise<IsAvailableResult>

Since: 7.0.0


startMeasurementUpdates()

startMeasurementUpdates() => Promise<void>

Starts emitting measurement events.

Only available on Android and iOS.

Since: 7.0.0


stopMeasurementUpdates()

stopMeasurementUpdates() => Promise<void>

Stops emitting measurement events.

Only available on Android and iOS.

Since: 7.0.0


checkPermissions()

checkPermissions() => Promise<PermissionStatus>

Check if the app has permission to access the barometer sensor.

Only available on Android and iOS.

Returns: Promise<PermissionStatus>

Since: 7.0.0


requestPermissions()

requestPermissions() => Promise<PermissionStatus>

Request permission to access the barometer sensor.

Only available on Android and iOS.

Returns: Promise<PermissionStatus>

Since: 7.0.0


addListener('measurement', ...)

addListener(eventName: 'measurement', listenerFunc: (event: MeasurementEvent) => void) => Promise<PluginListenerHandle>

Only available on Android and iOS.

Param Type
eventName 'measurement'
listenerFunc (event: Measurement) => void

Returns: Promise<PluginListenerHandle>

Since: 7.0.0


removeAllListeners()

removeAllListeners() => Promise<void>

Remove all listeners for this plugin.

Since: 7.0.0


Interfaces

Measurement

Prop Type Description Since
pressure number The pressure in hPa (hectopascal). 7.0.0
relativeAltitude number The relative altitude in meters. Only available on iOS. 7.0.0
timestamp number The timestamp of the measurement in milliseconds since the epoch. 7.0.0

IsAvailableResult

Prop Type Description Since
isAvailable boolean Indicates whether the barometer sensor is available on the device. 7.0.0

PermissionStatus

Prop Type Description Since
barometer BarometerPermissionState The permission status of barometer. 7.0.0

PluginListenerHandle

Prop Type
remove () => Promise<void>

Type Aliases

GetMeasurementResult

Measurement

BarometerPermissionState

PermissionState | 'limited'

PermissionState

'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'

MeasurementEvent

Measurement