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.