title: Programming techniques/libraries for locating a user with a mobile device within a building
body: <p>I am looking to develop an application usable on the devices of visitors so that I can tell where they are. The initial idea I had, already done in some museums, is to have a number on specific locations within the museum, they call a phone number, enter that number, and get enhanced content, perhaps audio narration about that space. This is nicely device agnostic, though some WiFi only devices may not have a mechanism to call a phone number, but perhaps having folks on WiFi load a mobile website and choose their location (assuming the number of spots is not too many) from a list, and then click a button.</p>
  
  <p>I'm new to this, and have been brainstorming on this, but I really don't know what I don't know. So here are my questions:</p>
  
  <ul>
  <li>Can I use GPS indoors and get accurate information or will that basically not work in most buildings?</li>
  <li>If I use a service like <a href="http://www.skyhookwireless.com/" rel="nofollow">Skyhook Wireless</a>, and use multiple WiFi routers, will I be able to locate the WiFi connected users accurately?</li>
  <li>Can I use Bluetooth somehow? Setup for Bluetooth seems like a hassle, but maybe there's a Bluetooth mode that is simpler to use for an application like this?</li>
  <li>For devices with a camera, what can I do with an image here. Photo of a <a href="http://en.wikipedia.org/wiki/QR_Code" rel="nofollow">QR Code</a>? Are QR code reading libraries built into devices I can use, or would I need to find a library?</li>
  <li>Are there are other techniques I might be able to use, maybe counting footsteps with the accelerometer somehow? Or using magnets somehow for devices with a compass?</li>
  </ul>
  
  <p>Suggestions welcome, assume I'm trying to target as many smartphones as practical (<a href="http://developer.android.com/" rel="nofollow">Android</a>, <a href="http://developer.apple.com/" rel="nofollow">iOS</a>, <a href="http://us.blackberry.com/developers/" rel="nofollow">Blackberry</a>, <a href="http://developer.palm.com/" rel="nofollow">webOS</a>, <a href="http://create.msdn.com/en-US/" rel="nofollow">Windows Phone 7</a>) that are popular in North America. If there is a way to also include devices that are not considered smartphones, that would be great too.</p>
  
  <hr>
  
  <p><strong>UPDATE</strong></p>
  
  <ul>
  <li><a href="http://radar.oreilly.com/2011/10/indoor-navigation.html" rel="nofollow"><strong>Why indoor navigation is so hard</strong>: <em>Your phone can get you to the museum, but it can't guide you to the T-Rex</em></a> by Nick Farina</li>
  </ul>
  
  <hr>
  
  <p><strong>UPDATE 2</strong></p>
  
  <ul>
  <li><a href="https://www.brooklynmuseum.org/community/blogosphere/2012/01/04/qr-in-the-new-year/" rel="nofollow">Brooklyn Museum experiment with QR Codes: too soon to
  tell/negative</a></li>
  <li><a href="http://urbanscale.org/2011/11/20/week-46-qr-or-not-qr/" rel="nofollow">Very few people can successfully scan and use a QR code</a></li>
  </ul>
  
  <hr>
  
  <p><strong>UPDATE 3</strong></p>
  
  <ul>
  <li><a href="http://www.extremetech.com/extreme/126843-think-gps-is-cool-ips-will-blow-your-mind" rel="nofollow">Think GPS is cool? IPS will blow your mind</a></li>
  </ul>