Mobile
Android · iOS
Review the Flutter-based integration package where provided.
SDK · Development
Follow the development sequence from environment selection and permissions through device connection, streaming, event storage, and real-world validation.
Product overview
Mobile
Review the Flutter-based integration package where provided.
Desktop
Build device and stream integration in the provided Python environment.
Validation
Before UI polish, verify missing samples, events, and PPG or IMU time alignment.
Implement device connection and measurement with mobile permissions and application lifecycle in mind.
Implement device connection, processing, and file storage in a Python runtime.
Validate stream schemas, timing, events, storage integrity, and downstream transfer.
How to develop
Follow version-specific function names but keep state transitions and data validation in this order.
Prepare the package, samples, and documentation matching the target OS and version.
Confirm the device model, firmware, and identifier used for discovery.
Match the environment required by the product, such as Flutter mobile or Python desktop.
Confirm whether you will use basic streams or additional PRO waveform and metric outputs.
Install the Android, iOS, Windows, or Linux SDK and run its sample project before integrating it into your application.

Request Bluetooth and nearby-device permissions before discovery and handle denial, retry, and Bluetooth-off states in the UI.
Filter supported devices and explicitly manage discovering, connecting, connected, disconnected, and reconnecting states.
Separate PPG, ACC, Gyro, and Mag in callbacks or streams and preserve receive time and any available device timing.
Connect participant code, session start and end, and study events to the data timeline and write CSV or your own schema.
In short and long sessions, verify missing, duplicate, or reversed samples, PPG or IMU alignment, disconnections, and recovery.
Download
Check the file structure, columns, and units before measuring so that you can prepare your analysis pipeline in advance.
Review an anonymous example that stores PPG, nine-axis IMU, and events on one timeline.
Included fields
Time · PPG · ACC x/y/z · Gyro x/y/z · Mag x/y/z · event
This sample explains structure only. Use the installed SDK README as the source of truth for actual APIs, types, units, and sampling conditions.
Download development CSV sampleData example
The anonymous values below demonstrate the file structure. Scroll horizontally to review every sensor column.
Discovery, connection, measurement, disconnection, and reconnection agree in UI and logs.
PPG, ACC, Gyro, and Mag retain their units and timing.
Participant code and study events stay connected to the measurement timeline.
CSV or another file has verified headers, units, missing values, and encoding.
Versions, device, conditions, missing samples, and reconnection results are reproducible.
The example keeps PPG, ACC, Gyro, Mag, and study events together on the same time row.
| Time (seconds) | PPG (dB) | ACC x (m/s²) | ACC y (m/s²) | ACC z (m/s²) | Gyro x (°/s) | Gyro y (°/s) | Gyro z (°/s) | Mag x (µT) | Mag y (µT) | Mag z (µT) | event |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.02 | 24119.000 | -0.105 | 0.858 | 9.727 | -0.022 | -0.011 | -0.010 | -50.531 | -7.348 | 8.398 | 0 |
| 0.04 | 24121.918 | -0.106 | 0.907 | 9.721 | -0.030 | -0.024 | -0.010 | -50.363 | -7.078 | 8.298 | 0 |
| 0.06 | 24124.837 | -0.106 | 0.956 | 9.716 | -0.038 | -0.037 | -0.011 | -50.195 | -6.809 | 8.197 | 0 |
Stabilize basic connection and source streams first, then validate PRO features as a separate stage.
Before contacting support
No. This page describes the shared workflow and data structure. Use the README and sample code for the purchased SDK version for exact functions, types, initialization, and error codes.
We recommend separating live rendering and file storage so they do not delay each other. Validate missing samples using the actual performance and sample period of your target environment.
Check the SDK documentation for available timestamp semantics. Preserve receive time and available device timing according to the analysis requirement and compare them with events.
No. The sample is structural. Actual fields, types, and units can vary by device, app or SDK version, and settings.
A minimum reproduction and environment logs are more useful than an entire codebase for identifying connection or stream issues.
Contact SDK technical support