В Android у вас есть три возможности определить местоположение телефона Android:
1) GPS
2) Сеть
3) Триангуляция
Но ни одна из этих трех возможностей не подходит для вашей проблемы. GPS является наиболее точным, но, как вы уже заметили, он не работает в зданиях и не сможет различить разные этажи. Проблема в том, что точность GPS составляет в лучшем случае 3 или 4 метра. Две другие возможности гораздо менее точны. Вот почему нет реального решения вашей проблемы.
Одной вещью, которая может быть возможной, является датчик движения. Если вы знаете, где пользователь начинает, вы можете использовать датчик движения, чтобы рассчитать, сколько метров он перемещает. Но я не думаю, что это достаточно точно.