Gyros and accelerometers are not enough.
You get position by integrating the linear acceleration twice but the error is horrible. It is useless in practice.
Here is an explanation by (Google Tech Talk) at 23:20. I highly recommend this video.
As for indoor positioning, I have found these useful:
- RSSI-Based Indoor Localization and Tracking Using Sigma-Point Kalman Smoothers
- Pedestrian Tracking with Shoe-Mounted Inertial Sensors
- Enhancing the Performance of Pedometers Using a Single Accelerometer
I have no idea how these methods would perform in real-life applications or how to turn them into a nice Android app.
A similar question is Calculating distance within a building.