Call for Code submission for COVID-19 track.
PocketCare S is a comprehensive smartphone-based solution for monitoring close encounters. It is a bluetooth low energy (BLE) based solution which enables smartphones to send and receive anonymous beacon signals. It checks the distance between a smartphone and another beacon (or smartphone running PocketCare S) to see if they are close to each other (less than 2m). If so, the smartphone records the duration of such a close encounter with another beacon.
PocketCare S is designed to report social distance information without collecting or revealing any personally identifiable information about any specific individual.
- Demo Video
- The Architecture
- Getting Started
- How does PocketCare S Work?
- Push Notification for Exposure
- Built With
- Project Road Map
- Additional Information
- License
- Acknowledgments
If you're having trouble accessing the video, click here.
Due to emulators not supporting Bluetooth, close encounter detection will not work on emulators.
Before you begin, make sure you satisfy the following requirements:
- You are running PocketCare S on a physical Android device.
- The device should at least be running on Android SDK Version 21 (Android L).
- The device should have Bluetooth LE support. More details about this requirement can be found here.
As long as you run this on any modern Android device, the application should work properly. You can check the Bluetooth LE compatibility of your device here.
- Open the project in Android Studio.
- Wait for Gradle build to finish.
- Connect your Android device to your computer and make sure you have USB debugging turned on. You can follow this article to enable usb debugging.
- The application is already configured with the IBM server URL. If you want to run server on your local machine follow the server setup documentation and replace the serverHost variable in with your URL.
private final static String serverHost = "YOUR_SERVER_URL";
- Android Studio should automatically detect the configurations, after the gradle build is finished click on the play button on top to run PocketCare S. If the gradle build does not succeed follow this document to troubleshoot any errors.
- On your Android device, make sure you have install from unknown sources enabled. You can follow this article to enable it.
- Download the APK from here.
- After the APK is downloaded, tap to install it and run PocketCare S.
Once the application starts, follow the on-boarding process and read how PocketCare S works below.
Throughout this section, you can learn how PocketCare S works and the factors that differentiates it from other solutions hoping to solve similar problems.
- PocketCare S uses Bluetooth Low Energy (BLE) to discover and compute the duration close encounters.
- A close encounter session starts when two people are within 2 meters for at least 5 minutes.
- Close encounter data will be displayed in the mobile application after a close encounter session starts.
- Users are notified immediately if a close encounter session exceeds 10 minutes.
- The virtual bluetooth name changes every hour to ensure user privacy.
- Data stored in the mobile application is anonymized (contains no Personally Identifiable Information) and consists of daily health report and close encounters for a maximum period of 14 days.
- Data upload to the server takes place every hour.
PocketCare S has made significant technological advances compared to other solutions. An Infographic with this information can be found here.
PocketCare S cares values the security and privacy of its users. The app does not collect any private information about an individual person. All the data collected is anonymous and will not reveal any personally identifiable information. An Infographic with this information can be found here.
For a more detailed description, refer to the additional information section.
PocketCare S plans to implement automatic contact tracing by collaborating with healthcare organizations in the future. In the current Android application, we have added an experimental feature to show how these notifications would work in the future.
PocketCare S Android application can get push notification for COVID-19 exposure from the web portal. You can learn more about the steps to send a push notification for exposure from the web portal here. This is still a work in progress and hence you will need to get the unique App Client ID of the infected person from the Android application itself to notify the users who have been in contact with the infected person. You can get the App Client ID following the guide below.
Follow these directions for Android Studio or ADB to get the App Client ID.
- Open the PocketCare S Android project in Android Studio.
- Connect the android device to your computer with the application run. If it is not running, click on the play button and run the application.
- In the bottom of the screen, click on log cat and in the search box paste App_Client_ID. This is the tag used to filter the ADB log and get the logged value of App Client.
- Copy the value of App Client ID and continue with the steps to send sending push notifications for exposure guide.
- Make sure you have ADB installed in your system. Follow this guide to install ADB in your system.
- Connect your phone to the computer (make sure USB debugging is turned on and the application is running) and open your favorite terminal.
- Type
adb devices
and make sure your phone is in the "List of attached devices". - Now to get the value of App Client ID from the logcat type
adb logcat -s App_Client_ID
. - Copy the value of App Client ID and continue with the steps to send sending push notifications for exposure guide.
- Android Beacon Library - Used for close contact detection
- High Charts - Used to visualize data
- IBM Push Notifications - Push Notification for Exposure
- BeaconMonitor - Used for close contact detection
- Charts - Used to visualize data
- CryptoSwift - Used for encryption
- Red Hat OpenShift on IBM Cloud
- Server using OpenJDK 8
- Database using MongoDB
- Web Portal hosted using Node JS Server
- React - Used to build the web portal
- Spring Boot - Framework for the Server
You can read more about PocketCare S on our website. We also have a White Paper which can be accessed here.
An in-depth video on the PocketCare S mobile application can be found here.
PocketCare S is also available on Google Play and to the University at Buffalo (UB) community using the Apple Developer Enterprise Program.
This project is licensed under the Apache 2 License - see the LICENSE file for details.
Special thanks to all who helped bring the project to fruition:
Sourav Samanta, Rishabh Joshi, Jeetendra Gan, Shanelle Ileto, Aritra Paul, Dr. Peter Winkelstein, Dr. Matthew R. Bonner, Kevin Wang, Chen Yuan, Dheeraj Bhatia, Latheeshwarraj Mohanraj, Dr. Wen Dong, Dr. Tong Guan, Dr. Marina Blanton, Sasha Shapiro, Stephen Fung, David G. Young
And our deepest gratitude for the support of University at Buffalo.