Getting Started with Pedometer
Konten ini belum tersedia dalam bahasa Anda.
This guide will walk you through integrating the Capacitor Pedometer plugin into your application.
Installation
Install the plugin using npm:
npm install @capgo/capacitor-pedometernpx cap synciOS 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 updatesCapacitorPedometer.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 updatesawait 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; }}
// Usageconst pedometer = new PedometerService();await pedometer.initialize();await pedometer.startTracking();Best Practices
- Check Availability: Always verify pedometer features before use
- Request Permissions: Handle permission requests gracefully
- Battery Optimization: Stop updates when not needed
- Error Handling: Wrap calls in try-catch blocks
- 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
- Explore the API Reference for complete documentation
- Check out the example app
- See the tutorial for advanced implementation