Kenton Miller Akshay Gupta Harshit Chawla Mark Belt
Mobile phone users are drastically increasing in numbers around the world. The International Telecommunications Union has estimated that in 2014 there were 6.9 billion mobile-cellular subscriptions worldwide and 2.3 billion mobile-broadband subscriptions . This astoundingly large population of cell and mobile-data subscribers require cellular connectivity to receive the most out of their mobile experience.
Access to a reliable signal equates to an enjoyable user experience. PointMe's aim is to provide cell and mobile-data subscribers with actionable information about reliable cellular coverage.
PointMe was developed to assist mobile users in locating better cell coverage. PointMe is a crowd-sourced application for the iOS and Android mobile platforms. PointMe collects anonymous geolocation and signal data (along with some metadata necessary to classify reports) and transmits it, with user permission, to PointMe servers. Shared data is then combined with data collected locally by the user’s device, and displayed as a heatmap representative of the current state of cellular signal strength in the surrounding area. This allows the user to locate areas in close proximity with better cell coverage, and provides insight about dead zones to avoid. The user also has complete control over how their data is shared - they can at any time opt out of publicly sharing their data.
The PointMe application has been developed for Android version 4.2 and iOS version 6.0. Both platforms use custom algorithms for drawing the heatmap, and manage a local data store implemented as a SQLite database. The apps communicate via REST API with the server to transfer data as necessary. The server itself is implemented on a CentOS 5.6 VPS. NginX is used as the web server, acting as a reverse proxy to the node.js application which implements the REST API. We chose to use a MySQL database as the primary data store due to its strengths in handling spatial (location based) records. The node app interacts with the database on behalf of the client and returns response data as appropriate. Below is a diagram tracing a typical request through the system.