SubPos Android API

A project log for SubPos Positioning System

A "dataless" Wi-Fi positioning system that can be used anywhere GPS can't.

BleckyBlecky 05/26/2015 at 12:420 Comments

Here's what some of you have been waiting for, the (rough) Android API has been released! In addition, I have moved the project repositories to github:

In the open source API I have moved to another trilateration library from here. This relies on the org.apache.commons.math3 library to work, so you need to include this library in your project.

This initial release has been adapted from the prototype code that has been worked on so far, so bear with me if there are some errors or omissions, but I have tried to make it simple to use (also removing some of the experimental code until it's tested completely).

To integrate this API into an existing positioning application, all you need to do is create a SubPos object like so:

public class yourClass extends Activity {
    SubPos subpos;
    public void onCreate(Bundle savedInstanceState) {

        //Create new SubPos service
        subpos = new SubPos(this); //"this" passes the activity's context

Then to get your position, call:

SubPosPosition position = subpos.getPosition(); //returns null if position is not calculated
If you have any thoughts, ideas or fixes, by all means let me know if I have missed something, or if you would like to contribute to the API.

Unfortunately, in terms of releasing this on iOS, SubPos will currently not work on a non jailbroken iPhone as they restrict access to the Wi-Fi API. Apple don't even allow Wi-Fi scanning applications (they removed existing ones from the App store too). This is quite a disappointment, considering it is very basic functionality that the hardware is fully capable of supporting. It has also been speculated that this has been done to provide vendor lockin with their iBeacon platform. So while it would be great to get this working on all smartphone platforms, for the moment, unless someone has contacts within Apple to make this happen, it looks like we are stuck with every other device in the world with a Wi-Fi receiver for the time being.