‘Watkins’ & ‘Watkins2.0’ development
There were two separate applications created for both Android and iOS users. To achieve better accuracy, both the applications were written in native languages for smooth communication of software with hardware, which allowed for data extraction at intervals of 0.005 seconds. The interaction of hardware with software is described in detail below in their respective sections.
Android
Android, due to its flexibility and compatibility with almost all devices, has become an essential component of all the hand held devices except Apple devices. There are several platforms available for developers to build applications for android users including react-native, flutter, java, kotlin etc. Out of them, there are few languages that are flexible to both android and iOS and provide utility of cross platform execution. However, when it comes to the usage of hardware, it is difficult to use such languages, and native languages are preferred. In android, the two native languages used to create apps are java and kotlin. The step counter application was written in kotlin. In order to count the steps, several application programming interfaces (APIs) were used to detect the movement of user.
iOS
iOS possess much high security and complex structure as compared to Android. However, there are several native platforms to make applications, namely Swift or objective C. Step counter application was written in Swift language. The interface was similar to Android and had the same flow.
Description
In mobile devices, there are several hardware components that are used for specific movements e.g. gyroscope is used to detect the rotation, accelerometer is used for movement in x,y,z axis and pedometer is used for step-count. Although these hardware components are useful to detect the mobile movement, they have their limitation which prevent them from being used directly. In our application, we used accelerometer, pedometer and gyroscope to detect the linear and angular movement and calculate the number of steps. It is not possible to interact with these hardware components directly. Kotlin provides API calls that interact with hardware following permission coding. Once permitted to access the hardware, we use the APIs to get a response from the hardware. Several open-source libraries were used to get data from the sensors.
An API based call was sent to the hardware that responded by providing coordinates according to the movement of the user. This raw data is then processed and based on the output it is decided whether the user mobilised or not.
For Android this was achieved through libraries such as android.hardware.SensorEventListener and android.hardware.SensorManager.
For iOS, Core Motion library was used to create events required to communicate with the hardware. One of the main class is the CMMotionManager that manages all the services required to detect the motion. The main hardware used to count steps was pedometer. CMDeviceMotion class provides the attitude, rotation rate, and acceleration of a device. CMPedometer is the most important part of this application, as this class was used to interact with pedometer to detect the movement of the mobile phone based on which it decides how many steps user has taken. Based on the measurements received, steps and distance are calculated.
Functioning
The application starts with the interface that asks the user for very basic demographics to maintain individual progress records. Following this, the app allows its user to choose which test to perform; TUG test or timed 10-meter test.
The timed 10-meter test
The 10MWT is set at default 10 metres, but the walking distance can be manually changed. When distance is set, the app gives verbal countdown notice of 3 seconds before it verbally instructs to ‘start walking’. An animation is displayed that gives information of what the user is doing for example walking forward, backward. When the pre-set distance is covered in a straight line, the app verbally informs the patient to ‘stop’, and displays the result in measure of distance covered, time taken to cover set distance and number of steps taken.
TUG test
The TUG tests is set at default distance of 3 meters which can be manually changed. On selecting start, the app verbally countdowns from 3 before asking the user to ‘get up and walk’. Once 3 meters are covered the app verbally instructs the user to ‘turn around and walk back to the chair’. Once the required distance is covered the app verbally advises to ‘sit down’ and displays results in terms of time and number of steps taken to cover the distance. The results can be saved and compared with future results.
Ethical approval: Formal ethical approval, institutional board review and informed consent from participants was not required prior to the development of the apps. This was confirmed by the Health-Research Authority, UK.
Validation: The app was validated in 50 healthy adults, 67 NPH and 10 LOVA patients, as well as 5 elderly patients as part of falls risk assessment. 50/67 NPH and 6/10 LOVA patients were invited to use the app in their home-environment and results were compared to walking tests performed under supervision in clinics. The 10MWT was assessed with timed slow-pace and fast-pace. The results were compared with a clinical observer using a stop-watch.
Statistical analysis: Statistical analysis used SPSS (version 25.0, IBM) by paired t-test, comparing the healthy and the NPH cohorts. Level of precision of the app as compared to a clinical observer using a stopwatch was evaluated using receiver operating characteristics curve.