Localization Platform - Progress Document
Current state of the project:
1. Finished the characterization of the System.
2. Finished developing a prototype of the SDK for Android devices, with naïve
implementation of the SDK goals. A "mock application" for Android was created to
test the prototype:
a. Adds locations to the storage server - the sequence of locations is predefined
for each user, and "played" on every "add location" call. This can help us
work without considering the actual location of the testing environment.
b. Gets all the past locations that have been stored in the DB server.
c.
Calls the "predict next location" client-server operation which uses an initial
recommendation algorithm on the server-side.
d. A "settings" window that allows the user to control how often to send
locations and call the "prediction" function.
e. User management – "register" and "unregister" based on device IMEI.
The project vision:
"Localization Platform" is a framework for location-based applications.
The purpose is to answer on common needs in this subject, using efficient and reliable
implementations of location-based issues:
-
Storing the present and past locations of every user in the application.
-
Limiting the use of the following 4 parameters on the way:
o
battery life
o
network data plan
o
processing time
o
memory space
The basic functionality seems relatively easy. These days many mobile devices have an
internal GPS service that can ask the GPS server where the holder of the device is location
at. But this usage is very resource-heavy and wasteful to the user. We will provide a
framework that handles this task the best way possible, using planned algorithms, heuristics
and hardware components that can limit the usage of the expensive GPS service. All that
while staying accurate with the location assessment.
Related work:
The functionality for broadcasting locations, implemented in the SDK of most mobile operating
systems, especially the ones in Android and iPhone, involves constantly polling the GPS
ingredient of the device for a location. No optimizations have been made, as their most
important goal was accuracy, and not resource-saving.
A "recommendation" algorithm has been locally tested in the Communications System
Engineering department of BGU University, however it hasn't been tested on larger data, and
the accuracy rate is not known. As part of our work, we will integrate this algorithm but not as
the exclusive optimization.
In general, most systems implement at most one optimization, and enable that optimization by
the user's request. We make a difference by trying to achieve multiple optimizations, and
deciding to enable a subset of them in the most fitting cases.
Completed tasks:
1. Android SDK infrastructure and first, naïve implementation
2. "Mock application" in Android to test the SDK
3. "Storage server" for holding locations, implementing the client-server protocol from
the ARD
4. "Registered service" mechanism as described by the ARD
5. "Recommendation server", an instance of a "registered service" with a first
implementation of the "location prediction" algorithm from BGU Communications
Systems Engineering department.
Future tasks:
1. The recommendation algorithm was found inefficient and can't work on very large
data at the moment, due to bad implementation of the concept. The finished version
of the prototype will improve the algorithm so that it stands with the non-functional
requirements stated in the ARD.
2. The results from the prototype about the accuracy rate of the only optimization we
have will get our academic advisor reach a decision about the most fitting times to
use that algorithm in order to save resources.
3. Consider combining more optimization methods.
4. Develop a similar SDK to iPhone and compare behavior.
5. For Android only, investigate how the operating system implements GPS usage and
reach conclusions about better implementation – our target is resources saving while
theirs was highest accuracy rate.