Prepare for capture

Guide how to prepare a workout and start a capture

Prepare for measurement

Make sure you have already set up your notches and calibrated them well. You can follow this document if you need any help.

Once you have the pre requisites you can start the capture flow

  1. Create a workout
  2. Setup the Notch network
  3. Wear the devices
  4. Steady
  5. Do the capture
  6. Download

Create a workout

To make a measurement first you need to obtain a NotchWorkout object. You need for this a skeleton and a workout descriptor. See skeleton & workout loading in the utils.

The default configuration for the chest and the skeleton can be found in the tutorial application after you have a valid licence code by buying one of our kits.

Init workout

Workout is the measurement setting for tracking pre-set motion or group of motions (e.g. baseball swing, punching drill, shoulder mobility test). Workout is the core element of Notch-compatible app architecture.

        Skeleton skeleton = Skeleton.from(
            new InputStreamReader(
                    mApplicationContext.getResources().openRawResource(R.raw.skeleton_male), "UTF-8"));
        Workout workout = Workout.from(
                    new InputStreamReader(
        let workout = NotchWorkout.from(
        name: "The name of the measurement",
        skeleton: NotchSkeleton.from(
            configJsonString: stringSkeletonJson),  
        configString: workoutJson)

Then you can:

  • Either call NotchService.initWithWorkout(...) with the created workout
  • Call with channel setting if it is possible that more than one Notch networks are around: NotchService.initWithChannelAndWorkout(...).

Wait until success, progress can be shown based on the progress callbacks parameter. After connecting your devices are tight to the bones they will measure.

Wear devices

Here is the time to put on all the notches. You can easily match where to put them by following the colors of the Notches.

Note that blinking Notches even if have the same colors are different.


The Steady phase is a brief sensor alignment procedure that the user must perform at the very beginning of the recording session. During steady phase, the user must stand with the arms straightened and legs shoulder-width for about 2 seconds. Once the Steady phase is completed, the user can perform as many recordings as necessary until they remove or move the Notch sensors.

Notches store their previous steady information in the NotchDevice object. Please make sure you either start from the very same pose and placement every time or the data could be corrupted and the visualization might fail to render correctly.

We highly suggest you refreshing the steady pose before each measurement.

  1. Call NotchService.configureSteady(...).
    • To color the notches you should pass true to the isShowingColors parameter.
    • The user has to attach the notches to his/her body according to the specified colors.
  2. Call NotchService..steady(...) and wait for the result.
    • The user has to stay in the steady pose still until the ‘success’ or ‘failure’ callback is called.
  3. Upon success call NotchService.getSteadyData(...) to verify the results


You have various options to start a capture:

  1. Time capture:
    Before the start, you configure how long this measurement will take. After the specified timeout has reached all the notches will be stopped.
    • There is no real-time feedback.
    • Can be configured to work as a remote (device disconnection will not interrupt your current measurement)
  2. Stopwatch capture:
    After you have started your measurement you can stop at any time.
    • There is no real-time feedback.
  3. Real-time capture:
    After the start, you receive periodically the recorded and processed measurement data. If the notches reach out of sight the operation stops.
    • This can be done with a maximum of 4 notches. Note Some Android devices can perform a 6 Notch real-time capture. This varies from device to device due to hardware, firmware and software distribution.

After the 1 & 2 options, you receive a NotchMeasurement on success which contains useful information about the latest measurement. See more at download

Timed capture

  1. Call NotchService.configureTimedCapture(...) and wait for the success callback.
  2. Call NotchService.timedCapture(...), the success/failure callbacks are called after the timer ends.
  3. Do your measurement
Remote timed capture
  1. Call NotchService.configureTimedCapture(...) and wait for the success callback.
  2. Call NotchService.remoteCapture(...), the success/failure callbacks are called immediately.
  3. Do your measurement

Upon success, you get a NotchMeasurement object of the calculated final state. If something goes wrong (for example a Notch turned off) this measurement file will contain bad information.

Capture with stopwatch

  1. Call NotchService.configureCapture(...) and wait for the success callback.
  2. Call NotchService.capture(...), the success/failure callbacks are called after start.
  3. Do your measurement
  4. Stop the measurement by calling NotchService.stop(...).

Real time

During real-time-capture, the notches send a NotchVisualiserData object of the current state.
The process is the same as for the stopwatch capture. DO NOT call stop at the end, rather cancel the measurement to finish it.
In the progress callback of the ‘capture’ service operation, you can get access to the ‘realtimeData’ property, which holds the corresponding movement data for the last time frame.

Download a measurement

Great, by now you should know how to properly create a measurement.
To download the notch measurement, either save the NotchMeasurement from the success block of the capture call or the result of stop operation.

Download IImmediatelyAfter Capture

Use the immediate download to acquire the motion data right after the capture was taken and stopped:

  • Call the download operation with your desired target URL.
  • Wait for the success.

Download Later

The recorded measurement contains various information about the workout. Call serialize, to serialize the result to a file.

Save measurement information

  • Call the serializeMeasurement operation with your desired target URL.
  • Save the URL somewhere for later usage.

Load measurement information

  • Call the deserializeMeasurement operation with your desired source URL.
  • Make sure that the notches that were used for this measurement are turned on.
  • Use the loaded object to download the measurements from the devices. See immediate download

Check the results

By acquiring the NotchMeasurement object of your recording you can check if any of the sensor data became corrupted. Load the getStatus() method of the measurement and check if it contains the following phrase: Sensor Test. If so, we highly suggest you to make a new sensor test to re-calibrate your sensors. Check NotchService.getSensorTestData(...).

Setup Notches