{"id":40087979,"url":"https://github.com/cap-go/capacitor-pedometer","last_synced_at":"2026-04-27T09:05:04.609Z","repository":{"id":321003607,"uuid":"1084062717","full_name":"Cap-go/capacitor-pedometer","owner":"Cap-go","description":"Capacitor plugin for accessing pedometer data including steps, distance, pace, cadence, and floors","archived":false,"fork":false,"pushed_at":"2026-04-06T06:22:08.000Z","size":626,"stargazers_count":7,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T08:41:19.322Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cap-go.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"Cap-go","patreon":null,"open_collective":"capgo","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2025-10-27T07:00:46.000Z","updated_at":"2026-04-06T06:21:18.000Z","dependencies_parsed_at":"2025-12-19T14:02:10.161Z","dependency_job_id":null,"html_url":"https://github.com/Cap-go/capacitor-pedometer","commit_stats":null,"previous_names":["cap-go/capacitor-pedometer"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/Cap-go/capacitor-pedometer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-pedometer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-pedometer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-pedometer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-pedometer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cap-go","download_url":"https://codeload.github.com/Cap-go/capacitor-pedometer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-pedometer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31746113,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T06:26:45.479Z","status":"ssl_error","status_checked_at":"2026-04-13T06:26:44.645Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-19T10:00:34.696Z","updated_at":"2026-04-13T09:01:15.399Z","avatar_url":"https://github.com/Cap-go.png","language":"JavaScript","funding_links":["https://github.com/sponsors/Cap-go","https://opencollective.com/capgo"],"categories":[],"sub_categories":[],"readme":"# @capgo/capacitor-pedometer\n\nCapacitor plugin for accessing pedometer data including steps, distance, pace, cadence, and floors.\n\n## Compatibility\n\n| Plugin version | Capacitor compatibility | Maintained |\n| -------------- | ----------------------- | ---------- |\n| v8.\\*.\\*       | v8.\\*.\\*                | ✅          |\n| v7.\\*.\\*       | v7.\\*.\\*                | On demand   |\n| v6.\\*.\\*       | v6.\\*.\\*                | ❌          |\n| v5.\\*.\\*       | v5.\\*.\\*                | ❌          |\n\n\u003e **Note:** The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation (e.g., plugin v8 for Capacitor 8). Only the latest major version is actively maintained.\n\n## Install\n\n```bash\nnpm install @capgo/capacitor-pedometer\nnpx cap sync\n```\n\n## Configuration\n\n### iOS\n\nAdd the following to your `Info.plist`:\n\n```xml\n\u003ckey\u003eNSMotionUsageDescription\u003c/key\u003e\n\u003cstring\u003eWe need access to your motion data to track steps and activity\u003c/string\u003e\n```\n\n### Android\n\nThe plugin will automatically add the `ACTIVITY_RECOGNITION` permission to your `AndroidManifest.xml`.\n\nFor Android 10 (API 29) and above, you need to request the `ACTIVITY_RECOGNITION` permission at runtime.\n\n## API\n\n\u003cdocgen-index\u003e\n\n* [`getMeasurement(...)`](#getmeasurement)\n* [`isAvailable()`](#isavailable)\n* [`startMeasurementUpdates()`](#startmeasurementupdates)\n* [`stopMeasurementUpdates()`](#stopmeasurementupdates)\n* [`checkPermissions()`](#checkpermissions)\n* [`requestPermissions()`](#requestpermissions)\n* [`addListener('measurement', ...)`](#addlistenermeasurement-)\n* [`removeAllListeners()`](#removealllisteners)\n* [`getPluginVersion()`](#getpluginversion)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n\u003c/docgen-index\u003e\n\n\u003cdocgen-api\u003e\n\u003c!--Update the source file JSDoc comments and rerun docgen to update the docs below--\u003e\n\n### getMeasurement(...)\n\n```typescript\ngetMeasurement(options?: GetMeasurementOptions | undefined) =\u003e Promise\u003cMeasurement\u003e\n```\n\nGet pedometer measurements for a specified time range.\n\n| Param         | Type                                                                    |\n| ------------- | ----------------------------------------------------------------------- |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#getmeasurementoptions\"\u003eGetMeasurementOptions\u003c/a\u003e\u003c/code\u003e |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#measurement\"\u003eMeasurement\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 0.0.1\n\n--------------------\n\n\n### isAvailable()\n\n```typescript\nisAvailable() =\u003e Promise\u003cIsAvailableResult\u003e\n```\n\nCheck which pedometer features are available on this device.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#isavailableresult\"\u003eIsAvailableResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 0.0.1\n\n--------------------\n\n\n### startMeasurementUpdates()\n\n```typescript\nstartMeasurementUpdates() =\u003e Promise\u003cvoid\u003e\n```\n\nStart receiving real-time pedometer measurement updates.\n\nOn **Android** and **iOS**, the `measurement` event is only fired after calling `startMeasurementUpdates()`.\n\n**Since:** 0.0.1\n\n--------------------\n\n\n### stopMeasurementUpdates()\n\n```typescript\nstopMeasurementUpdates() =\u003e Promise\u003cvoid\u003e\n```\n\nStop receiving real-time pedometer measurement updates.\n\n**Since:** 0.0.1\n\n--------------------\n\n\n### checkPermissions()\n\n```typescript\ncheckPermissions() =\u003e Promise\u003cPermissionStatus\u003e\n```\n\nCheck permission to access pedometer data.\n\nOn **Android**, this checks the `ACTIVITY_RECOGNITION` permission.\nOn **iOS**, this checks the motion usage permission.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#permissionstatus\"\u003ePermissionStatus\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 0.0.1\n\n--------------------\n\n\n### requestPermissions()\n\n```typescript\nrequestPermissions() =\u003e Promise\u003cPermissionStatus\u003e\n```\n\nRequest permission to access pedometer data.\n\nOn **Android**, this requests the `ACTIVITY_RECOGNITION` permission.\nOn **iOS**, this requests motion usage permission.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#permissionstatus\"\u003ePermissionStatus\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 0.0.1\n\n--------------------\n\n\n### addListener('measurement', ...)\n\n```typescript\naddListener(eventName: 'measurement', listenerFunc: (event: MeasurementEvent) =\u003e void) =\u003e Promise\u003cPluginListenerHandle\u003e\n```\n\nCalled when a new pedometer measurement is received.\n\n| Param              | Type                                                                    |\n| ------------------ | ----------------------------------------------------------------------- |\n| **`eventName`**    | \u003ccode\u003e'measurement'\u003c/code\u003e                                              |\n| **`listenerFunc`** | \u003ccode\u003e(event: \u003ca href=\"#measurement\"\u003eMeasurement\u003c/a\u003e) =\u0026gt; void\u003c/code\u003e |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#pluginlistenerhandle\"\u003ePluginListenerHandle\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 0.0.1\n\n--------------------\n\n\n### removeAllListeners()\n\n```typescript\nremoveAllListeners() =\u003e Promise\u003cvoid\u003e\n```\n\nRemove all listeners for this plugin.\n\n**Since:** 0.0.1\n\n--------------------\n\n\n### getPluginVersion()\n\n```typescript\ngetPluginVersion() =\u003e Promise\u003c{ version: string; }\u003e\n```\n\nGet the native Capacitor plugin version.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;{ version: string; }\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### Measurement\n\n| Prop                    | Type                | Description                                                                         | Since |\n| ----------------------- | ------------------- | ----------------------------------------------------------------------------------- | ----- |\n| **`numberOfSteps`**     | \u003ccode\u003enumber\u003c/code\u003e | The number of steps taken by the user.                                              | 0.0.1 |\n| **`distance`**          | \u003ccode\u003enumber\u003c/code\u003e | The estimated distance (in meters) traveled by the user. Only available on **iOS**. | 0.0.1 |\n| **`floorsAscended`**    | \u003ccode\u003enumber\u003c/code\u003e | The approximate number of floors ascended. Only available on **iOS**.               | 0.0.1 |\n| **`floorsDescended`**   | \u003ccode\u003enumber\u003c/code\u003e | The approximate number of floors descended. Only available on **iOS**.              | 0.0.1 |\n| **`currentPace`**       | \u003ccode\u003enumber\u003c/code\u003e | The current pace (in seconds per meter). Only available on **iOS**.                 | 0.0.1 |\n| **`currentCadence`**    | \u003ccode\u003enumber\u003c/code\u003e | The current cadence (steps per second). Only available on **iOS**.                  | 0.0.1 |\n| **`averageActivePace`** | \u003ccode\u003enumber\u003c/code\u003e | The average active pace (in seconds per meter). Only available on **iOS**.          | 0.0.1 |\n| **`startDate`**         | \u003ccode\u003enumber\u003c/code\u003e | The start time of this measurement (milliseconds since epoch).                      | 0.0.1 |\n| **`endDate`**           | \u003ccode\u003enumber\u003c/code\u003e | The end time of this measurement (milliseconds since epoch).                        | 0.0.1 |\n\n\n#### GetMeasurementOptions\n\n| Prop        | Type                | Description                                                                               | Since |\n| ----------- | ------------------- | ----------------------------------------------------------------------------------------- | ----- |\n| **`start`** | \u003ccode\u003enumber\u003c/code\u003e | The start time for the measurement query (milliseconds since epoch). Required on **iOS**. | 0.0.1 |\n| **`end`**   | \u003ccode\u003enumber\u003c/code\u003e | The end time for the measurement query (milliseconds since epoch). Required on **iOS**.   | 0.0.1 |\n\n\n#### IsAvailableResult\n\n| Prop                | Type                 | Description                                                                                               | Since |\n| ------------------- | -------------------- | --------------------------------------------------------------------------------------------------------- | ----- |\n| **`stepCounting`**  | \u003ccode\u003eboolean\u003c/code\u003e | Whether step counting is available.                                                                       | 0.0.1 |\n| **`distance`**      | \u003ccode\u003eboolean\u003c/code\u003e | Whether distance measurement is available. Only `true` on **iOS** devices that support distance tracking. | 0.0.1 |\n| **`pace`**          | \u003ccode\u003eboolean\u003c/code\u003e | Whether pace measurement is available. Only `true` on **iOS** devices that support pace tracking.         | 0.0.1 |\n| **`cadence`**       | \u003ccode\u003eboolean\u003c/code\u003e | Whether cadence measurement is available. Only `true` on **iOS** devices that support cadence tracking.   | 0.0.1 |\n| **`floorCounting`** | \u003ccode\u003eboolean\u003c/code\u003e | Whether floor counting is available. Only `true` on **iOS** devices that support floor tracking.          | 0.0.1 |\n\n\n#### PermissionStatus\n\n| Prop                      | Type                                                                      | Description                                                                                                                                                | Since |\n| ------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`activityRecognition`** | \u003ccode\u003e'prompt' \\| 'prompt-with-rationale' \\| 'granted' \\| 'denied'\u003c/code\u003e | Permission state for activity recognition. On **Android**, this is the `ACTIVITY_RECOGNITION` permission. On **iOS**, this is the motion usage permission. | 0.0.1 |\n\n\n#### PluginListenerHandle\n\n| Prop         | Type                                      |\n| ------------ | ----------------------------------------- |\n| **`remove`** | \u003ccode\u003e() =\u0026gt; Promise\u0026lt;void\u0026gt;\u003c/code\u003e |\n\n\n### Type Aliases\n\n\n#### MeasurementEvent\n\n\u003ccode\u003e\u003ca href=\"#measurement\"\u003eMeasurement\u003c/a\u003e\u003c/code\u003e\n\n\u003c/docgen-api\u003e\n\n## Usage\n\n```typescript\nimport { CapacitorPedometer } from '@capgo/capacitor-pedometer';\n\n// Check availability\nconst availability = await CapacitorPedometer.isAvailable();\nconsole.log('Features available:', availability);\n\n// Check and request permissions\nconst permission = await CapacitorPedometer.checkPermissions();\nif (permission.activityRecognition !== 'granted') {\n  await CapacitorPedometer.requestPermissions();\n}\n\n// Start real-time updates\nawait CapacitorPedometer.addListener('measurement', (data) =\u003e {\n  console.log('Steps:', data.numberOfSteps);\n  console.log('Distance:', data.distance);\n});\n\nawait CapacitorPedometer.startMeasurementUpdates();\n\n// Query historical data (iOS only - requires start and end timestamps)\nconst now = Date.now();\nconst yesterday = now - (24 * 60 * 60 * 1000);\nconst measurement = await CapacitorPedometer.getMeasurement({\n  start: yesterday,\n  end: now\n});\n\n// Stop updates\nawait CapacitorPedometer.stopMeasurementUpdates();\nawait CapacitorPedometer.removeAllListeners();\n```\n\n## Platform Support\n\n| Feature | Android | iOS |\n|---------|---------|-----|\n| Step Counting | ✅ | ✅ |\n| Distance | ❌ | ✅ |\n| Pace | ❌ | ✅ |\n| Cadence | ❌ | ✅ |\n| Floor Counting | ❌ | ✅ |\n| Historical Queries | ❌ | ✅ |\n\n## Notes\n\n- On **Android**, only step counting is available. The plugin uses the `TYPE_STEP_COUNTER` sensor.\n- On **iOS**, all features are available on supported devices using `CMPedometer`.\n- Historical data queries require explicit `start` and `end` timestamps on iOS.\n- Android's step counter gives cumulative steps since last device reboot; the plugin tracks the delta.\n- Measurements are paused when the app is in the background.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcap-go%2Fcapacitor-pedometer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcap-go%2Fcapacitor-pedometer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcap-go%2Fcapacitor-pedometer/lists"}