Ответ 1
Ваша первоначальная интуиция верна - вам нужно использовать LocationListener
для запроса обновлений. Учитывая, что вам требуется только одна позиция, вы можете отменить регистрацию LocationListener после возвращения первого значения.
На практике, хотя, вероятно, разумно слушать немного дольше. Службы, основанные на местоположении (в частности, GPS), имеют тенденцию немного "подпрыгивать", когда они впервые получают исправление. Лучше всего прослушать определенное количество времени или заданное количество обновлений или пока не будет достигнут определенный уровень точности (приемник местоположения вернет точность возвращаемой позиции).