Skip to content

On-device research demo

Android Demo

Install the public preview APK for WT9011DCL-BT50 BLE acquisition and on-device ONNX inference. No sensor is required for the offline path: download the synthetic IMU sample and select it in the app.

Android 7.0+ arm64-v8a On-device ONNX
Android activity-recognition field tests covering background and five target activities Field-tested prototype

Download and try

v1.0preview build
33 MBdebug APK
API 24+Android 7.0+
120 ssynthetic sample
  1. Download and install the arm64-v8a APK.
  2. Download synthetic_activity_imu.tsv to the phone.
  3. Open Recognition, choose the downloaded file, and run offline inference.

The sample contains 12,000 computer-generated rows at 100 Hz and no participant data. The file picker accepts the .tsv file directly.

Preview APK

This is a debug-signed research preview, not a Play Store production build. Install only the APK linked above. Its SHA-256 is cdde56db9d915eb10918724d503597a84fb18deace096086fe87509f60348be6.

Capabilities

Area Implemented behavior
Acquisition Scan and connect to a WT9011DCL-BT50 over BLE
Visualization Acceleration, angular velocity, attitude, compass, trajectory, hand-motion, and dashboard views
Recording Save timestamped IMU CSV files to Android Downloads
Online inference Run the selected 3 s / 5 s / 8 s ensemble on session history
Offline inference Recognize the downloadable synthetic sample or a user-selected ACC/GYRO text file
Temporal logic Filtering, LBSA fusion, smoothing, Viterbi decoding, boundary refinement, and segment filtering
Localization Chinese and English UI strings

Runtime

Physical deployment chain from the WT9011DCL-BT50 wearable IMU through BLE acquisition and Android on-device inference to activity recognition
Physical deployment chain from wearable IMU acquisition to Android-side recognition. Select the image to view it at full resolution.

Requirements

  • Android Studio, or JDK 17 with an Android SDK;
  • Android Gradle Plugin 8.1.0 and the included Gradle 8.0 wrapper;
  • an Android device with BLE support; and
  • a WT9011DCL-BT50 sensor for live acquisition.

The offline recognition path can be explored without the physical sensor by copying a compatible derived segment text file to the phone.

Build

From the app directory:

cd android_realtime_app
./gradlew assembleDebug

The build downloads the four ONNX weights from the public HF Model repository and verifies their SHA-256 values. GitHub stores the app source and small JSON configuration, not the model binaries.

Android Studio creates local.properties automatically. Do not commit that machine-specific file.

Sensor

  1. Install the debug APK on a BLE-capable Android device.
  2. Turn on the WT9011DCL-BT50 sensor.
  3. Grant the required Bluetooth and location permissions.
  4. Tap Scan, select a device whose name contains WT, and connect.
  5. Use bottom navigation to inspect charts, attitude, hand, trajectory, dashboard, and recognition views.
  6. Start recognition or record a CSV session.

Recorded files use names such as:

imu_yyyyMMdd_HHmmss.csv

and are saved in the device Downloads directory.

Offline

On the recognition view, either:

  • select the downloadable synthetic_activity_imu.tsv sample;
  • choose a compatible paper-format ACC/GYRO .txt file; or
  • copy one of the derived files from android_realtime_app/motion_segments/ to the device and select it.

This exercises the app-side model and temporal layer without a live BLE connection.

Assets

Asset Role
combined_model_3s_seed42.onnx Selected 3-second model
combined_model_5s_seed123.onnx Selected 5-second model
combined_model_8s_seed123.onnx Selected 8-second model
norm_params_3s.json 3-second normalization
norm_params_5s.json 5-second normalization
norm_params_8s.json 8-second normalization
hand_motion.onnx Legacy fallback model
norm_params.json Legacy fallback normalization

The detailed model card contains input assumptions, output mapping, checksums, intended use, and known limitations.

Classes

Index Chinese English
0 无活动 No activity
1 羽毛球 Badminton
2 跳绳 Jump rope
3 飞鸟 Fly
4 跑步 Running
5 乒乓球 Table tennis

Research demonstration

The app and public models are intended for research, teaching, and reproducible prototype evaluation. They do not claim production safety, clinical validity, or cross-device generalization.

BLE tools

Optional utilities under android_realtime_app/tools/desktop/ provide:

  • collect.py for direct BLE collection and matplotlib plots;
  • server.py for a FastAPI + WebSocket service; and
  • index.html for a browser dashboard.

Hardware protocol details, UUIDs, packet parsing, unit conversion, and Android mapping are documented in the app's docs/ directory.