Hola All,
Done! I have created a series at:
https://launchpad.net/tagin/android-sdk
you can pull the code from there if you are interested in trying it
out. The series should evolve into a SDK for creating location-based
Android applications that work indoors. I will continue to maintain
and document this series with the objective of facilitating
third-party application development (including the geocaching game
planned for the Google Summer of Code).
The code includes an activity with two buttons at the top:
"Fingerprint" and "Snapshot". The fingerprint button will collect a
new fingerprint and dump it to a text view below. The "snapshot"
button will take a snapshot of the current fingerprint for reference
in subsequent comparisons.
*How to test*
Preferably install on an actual device since the emulator won't cut it.
FIrst open the "tagin! Fingerprinter" app... it should collect a
fingerprint as soon as you open it. Take a few more fingerprints just
so you see how the WiFi patterns change. In the text dump you will see
three comma separated values: BSSID, RSSI, Rank. The BSSID is the mac
address of an observed access point, the RSSI is the signal strength
in dBm, and the Rank is a number between 0 and 1 representing the RSSI
(1 being the strongest/highest RSSI ever recorded). The rank
normalizes the RSSI and it is meant to account for differences in how
different handsets measure strength since there is no standard. If you
are interested in learning how the rank is calculated, just look at
the getRanks() method in the Fingerprint class.
The snapshot button will make a copy of the current fingerprint and
dump it into another text view with the header "SNAPSHOT". If you get
another fingerprint after you have created a snapshot, the "Rank
distance" between your fingerprint and the snapshot will be calculated
and reported. The Rank distance is again a number between 0 and 1
where 0 means no difference (i.e., both fingerprints are identical)
and 1 means no similarity (i.e., fingerprints don't share a single
access point). If you take a snapshot and stay still, you should get a
number between 0 and 0.25. Anything between 0.25 and 0.5 usually means
you moved but you may still be in the same room, and anything above
0.5 typically means you are close but not in the same room. If you get
1 then you could be around the building, but you could also be in a
different country!
I would be interested in knowing what ranges you get when you walk
around the same room and when you go outside the room just to see if
it is the same I am getting. Maybe I'll put your data on the wiki to
have a preliminary reference.
If you have some basic idea of AI and/or machine learning, I hope you
could already imagine how you could use the Rank distance to quickly
put together an application using a simple approach like nearest
neighbours or similar, so do play around with it.
That is is for now... if you have any questions, comments,
suggestions, please reply to the thread.
cheers!
Jorge
On 11-04-10 03:58 PM, Jorge Silva wrote:
Hola all,
I have been working on upgrading the fingerprinting code for tagin! in
anticipation of the re-write of the engine that we will be completed as
part of the Google Summer of Code. This is just to let everybody know
that I will be pushing this code soon (hopefully later today).
The code will be in the form of a bunch of classes and a very
rudimentary activity that will show how fingerprinting works, what it
does and how it can be used to differentiate between distinct locations
indoors. Initially there will not be much documentation but I hope to
focus a bit more on that in the coming days (with your help).
Let me know if you have any comments. I will follow up on this thread
once I push the code online.
cheers!
Jorge
_______________________________________________
Mailing list: https://launchpad.net/~tagin-devel
Post to : tagin-devel@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~tagin-devel
More help : https://help.launchpad.net/ListHelp