North South University
Department of Electrical & Computer Engineering
Project Report
Group No: 06
Fall 2020
Project Name: HELP ME APP
Course No: CSE 299 Sec: 2
Faculty: Shaikh Shawon Arefin Shimon (Sas3)
Member 1:
Name: Ferdous Zeaul Islam
ID: 173 1136 042
Email: [email protected]
Member 2:
Name: Rifat Islam
ID: 173 1536 042
Email: [email protected]
Git Repository: https://github.com/NSU-FA20-CSE299-2/Group06
Date Submitted: 11/11/2020
INTRODUCTION
A real-time emergency help seeking platform consisting of an Android App.
MOTIVATION
Personal security is a great concern in our country. Lack of trust in authority has forced people to either take matters in their own hands or seek help through gaining publicity in social media. In any case, there is almost never any instant help for the victim. Our app is a meager attempt to create such a platform that provides instant assistance to a person in distress through appropriate medium, while keeping a keen eye to prevent spread of false information.
PROPOSED FEATURES
The features were extracted from the following use-case diagram,
The features are below,
Signup with email or Facebook account & login,logout.
Assign emergency contacts. Two types of emergency contacts:
- App users: Can be added by their username and phone number provided during sign up.
- Non-app users: Non app users can also be added through their phone number.
An emergency help post can consist of four elements:
- Text: predefined text, can be edited.
- Location: Current latitude and longitude of the person, visible on map.
- Photo: A photo clicked through the app, any human face detected in this photo will be blurred. (faces will be blurred to avoid false accusations, the platform is only meant for helping and not capturing or identifying criminals yet).
- TimeStamp.
The help post will be forwarded to four type of audience:
- Emergency Contacts: Assigned emergency contacts (explained in Feature-2) will receive the help seeking post. Both app-users and non-app-users will receive an SMS, app-users will also receive a notification from the app. The SMS will contain: poster’s location, phone number and a link. For app users the link will open the App and show the whole post, for non-app users this link will open a static web page containing all the elements(text, photo, location on map) provided by the poster.
- Nearby People: Other app users who are nearby within a specific range, using device bluetooth/wifi signal. Receivers need to have mobile bluetooth/wifi turned on to detect the signal. This signal will contain only text and location. It is unusual to expect people will keep bluetooth/wifi turned on all the time so for this, specific time periods can be fixed from the app settings by the users. This feature does not require any internet connection.
- User’s Facebook Profile: If an user has signed in with facebook and allowed the app to post on their facebook wall, emergency help seeking posts will be added to his/her facebook wall.
- App Feed:The app itself has a feed of it’s own, all emergency help posts will be listed here. The feed is visible to all app users and can be filtered based on location & time.
Posts for help can be made instantly by pressing a custom sequence of volume up-down button (default settings is press volume-down key twice and volume-up once) and also shaking the device up and down. For these detection mechanisms to function “Distress mode” needs to be enabled from the App’s settings. Such instant help seeking posts are to contain only predefined text and location.
Alternatively help seeking posts can be made with more details such as- attaching photos. Needless to say this type of posts cannot be generated instantly.
Assigned emergency contacts (who must also be app users) can monitor an user’s status- location on map, sudden shutdown of phone, unusual occurrence detected using motion and audio sensors. For the monitoring to take place, the user has to explicitly select and grant permission to emergency contacts through the app. The monitoring is completely real-time, but doesn’t require the monitoring user to constantly hold his phone and check. In case of sudden phone shutdown or unusual occurrence detected by the app a notification will be sent to the monitoring user. This notification will keep showing up after specified time intervals until the monitoring user notices.
INCOMPLETE FEATURES
Among the proposed features the following were not implemented-
- Add App users as emergency contacts (2i), only non-app users can be added as emergency users by their phone numbers.
- Reaching nearby people when posted for help was not implemented (4ii) because of unexpected behaviour of the API used (see Issue #5)
- Sign in with Facebook and post on Facebook feed (4iii).
- Automatically triggered help posts by gesture (5).
- Allowing emergency contacts to monitor in realtime (7)
PROJECT OVERVIEW
Brief description of parts of the project- app, web and database, are added below with appropriate screenshots.
Help Me App (Android)
Signin Page
Signup Page
User Menu Page
User Profile Page
Emergency Contacts Page
Help Post Page
Help Feed Page
Settings Page
Help Me Api (Express JS)
The web APIs in this project are developed with Expressjs framework which is a very popular javascript backend framework. The main purposes of the APIs are: to interact with the database and to provide reverse geolocation data. The Web App is thoroughly dependent on this Web API project.
Database Interaction: The major purpose of developing API is to interact with database service so that the Web App can send requests with query parameters (unique post id number in this case) and get the exact data from the database through API. This allows us to implement, integrate and set up the database SDK’s and services only one place which is in the API project. This helps to prevent using database services directly on the Web Appliaction, ensures security and to follow the best practices while developing softwares.
Reverse Geolocation: Another significant purpose of developing API is to decode users GPS data (lattitude and longitude) and convert them into formatted addresses. We used “OpenCage Geocoder”, a free geocoding API service in our API project to pursue this formatted address feature. The end point takes a unique post id number as a parameter and fetches that post’s latitude and longitude from the database. Then the API sends a request to the third-party Geocoder API and receives the response. After receiving the response it filters the data and only stores the formatted address data to that specific post’s address field in the database.
API endpoints and functions:
Endpoints | Functions |
/ | Shows API home |
/devlog | Shows API logs |
/post?pid={unique post id} | Sends help post as response |
/trigger?pid={unique post id} | Uses geocoding services to fetch formatted address and place it into that post’s address field in the database |
Help Me Web App
The Web App project establishes the ‘Help Me’ App as a multiplatform application by adding new dimensions in the application. The Web App allows users to view ‘Help Posts’ without downloading or installing the application on their phone. The Web App comes with very simple features. It has only three pages in total and the whole application is backed by the Expressjs framework. For the front end we also used css, javascript, ajax and bootstrap framework. The Web App can be used from any browser and the application is also ‘mobile browser friendly’.
App Lander Page: The app landing page is specifically made for promoting our mobile app. It describes the app's features and value proposition so that the users are enticed to click through, download, and install. This is a static web page, download options redirects to another page for further operations.
Help Post Page: This is the main page of the Web App that shows the exact ‘Help Post’ that user posted. The ‘Emergency Contact’ users will get the link of this page as a sms and will be directed into the page showing the full help post. This is the only dynamic web page of this application. If the android app fails to get the formatted address as the post address, the user can view the formatted address by clicking on the address field of the post. The users can also view the location on map by clicking the address field of the post. This will take them to the google map and they can view the location from native google map application or on the web map.
The Error Page: Users will be redirected to this static error page if they try to open an invalid ‘Help Post’ link which does not exist.
Database:
For database service we used Google’s ‘Firebase Realtime Database’ as our project’s main database. Firebase realtime database is a cloud-hosted nosql database. It stores data as JSON and synchronized in realtime to every connected client.
Database Structure:
TOOLS
- Framework
Android Studio with Java.
- Database
Firebase real-time database was used for storing all relevant data of the project.
Firebase storage was used for storing photos taken.
- Third Party Support
- Facebook SDK for Android (The SDK was not used)
- Google Nearby Connections API (Feature 4.ii)
- Google Fused Location Provider API (Feature 3.ii)
- Google Maps SDK (Was not required, default maps app was used to show location instead.)
- API for face blur (Subsequent feature was not implemented)
- API for phone shake gesture detection (Subsequent feature was not implemented)
SOCIAL BENEFITS
- Reduce constant fear of personal security with an assurance that you can instantly reach out to an appropriate group of audience when in distress (Feature-5).
- A platform that encourages community based response to an emergency situation by reaching out to nearby people, sharing on facebook and a global app feed (Feature-4.ii, 4,iii, 4.iv).
- The global app feed (Feature-4.iv) lets users identify risky areas, from where help seeking posts are made more frequently.
- Photo attached to help seeking posts attract more attention, especially when reaching out to nearby people & sharing on facebook. Faces in these photos will be blurred to prevent false accusations.
- The platform is aimed at only to provide assistance to one in distress but not to accuse/catch criminals. We believe the latter is a far more complex task.
PLANS FOR MONETIZATION
- Initially we plan to create a prototype using the free version of the tools mentioned. Presenting the prototype in various competitions/hackathons we hope to collect appropriate fundings for launching the app.
- If the idea is good enough we would also like to approach various charitable organizations for funding. However, we do not have a concrete plan on how and who to approach regarding this.
- The app will also be linked with a patreon account. Users can donate if they want there.