Zum Inhalt springen

Getting Started with Pedometer

Dieser Inhalt ist in Ihrer Sprache noch nicht verfügbar.

This guide will walk you through integrating the Capacitor Pedometer plugin into your application.

Installation

Install the plugin using npm:

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

iOS Configuration

Add motion usage description to your Info.plist:

<key>NSMotionUsageDescription</key>
<string>We need access to your motion data to track steps and activity</string>

Android Configuration

The plugin automatically adds the ACTIVITY_RECOGNITION permission. For Android 10+ (API 29), you need to request this permission at runtime.

Basic Usage

Import the Plugin

import { CapacitorPedometer } from '@capgo/capacitor-pedometer';

Check Availability

const checkPedometer = async () => {
const result = await CapacitorPedometer.isAvailable();
console.log('Step counting available:', result.stepCounting);
console.log('Distance available:', result.distance);
console.log('Floor counting available:', result.floorCounting);
console.log('Pace available:', result.pace);
console.log('Cadence available:', result.cadence);
};

Request Permissions

const requestPermission = async () => {
const permission = await CapacitorPedometer.requestPermissions();
console.log('Permission status:', permission.activityRecognition);
};

Get Current Measurements

const getMeasurements = async () => {
const measurements = await CapacitorPedometer.getMeasurement({
startDate: new Date(Date.now() - 24 * 60 * 60 * 1000), // 24 hours ago
endDate: new Date()
});
console.log('Steps:', measurements.numberOfSteps);
console.log('Distance:', measurements.distance, 'meters');
console.log('Floors ascended:', measurements.floorsAscended);
console.log('Floors descended:', measurements.floorsDescended);
};

Start Real-time Updates

// Add listener for real-time updates
CapacitorPedometer.addListener('measurement', (data) => {
console.log('Steps:', data.numberOfSteps);
console.log('Distance:', data.distance);
console.log('Pace:', data.currentPace);
console.log('Cadence:', data.currentCadence);
});
// Start receiving updates
await CapacitorPedometer.startMeasurementUpdates();

Stop Updates

await CapacitorPedometer.stopMeasurementUpdates();
CapacitorPedometer.removeAllListeners();

Complete Example

import { CapacitorPedometer } from '@capgo/capacitor-pedometer';
class PedometerService {
private listener: any;
async initialize() {
// Check availability
const available = await CapacitorPedometer.isAvailable();
if (!available.stepCounting) {
console.error('Step counting not available');
return false;
}
// Request permissions
const permission = await CapacitorPedometer.requestPermissions();
if (permission.activityRecognition !== 'granted') {
console.error('Permission denied');
return false;
}
return true;
}
async startTracking() {
// Add listener
this.listener = CapacitorPedometer.addListener('measurement', (data) => {
this.onMeasurement(data);
});
// Start updates
await CapacitorPedometer.startMeasurementUpdates();
console.log('Pedometer tracking started');
}
async stopTracking() {
await CapacitorPedometer.stopMeasurementUpdates();
if (this.listener) {
this.listener.remove();
}
console.log('Pedometer tracking stopped');
}
onMeasurement(data: any) {
console.log('Steps today:', data.numberOfSteps);
console.log('Distance:', (data.distance / 1000).toFixed(2), 'km');
}
async getTodaySteps() {
const today = new Date();
today.setHours(0, 0, 0, 0);
const measurements = await CapacitorPedometer.getMeasurement({
startDate: today,
endDate: new Date()
});
return measurements.numberOfSteps;
}
}
// Usage
const pedometer = new PedometerService();
await pedometer.initialize();
await pedometer.startTracking();

Best Practices

  1. Check Availability: Always verify pedometer features before use
  2. Request Permissions: Handle permission requests gracefully
  3. Battery Optimization: Stop updates when not needed
  4. Error Handling: Wrap calls in try-catch blocks
  5. Background Updates: Configure background modes for continuous tracking

Common Issues

Permission Denied

const handlePermissionDenied = async () => {
const permission = await CapacitorPedometer.checkPermissions();
if (permission.activityRecognition === 'denied') {
alert('Motion tracking permission is required. Please enable it in Settings.');
}
};

Not Available on Device

const checkSupport = async () => {
const available = await CapacitorPedometer.isAvailable();
if (!available.stepCounting) {
alert('Step counting is not available on this device');
return false;
}
return true;
};

Next Steps