获取Android应用的当前位置地址

Gru*_*umP 17 gps android location reverse-geocoding

我不需要显示地图.但是,我需要使用gps/3g网络来定位我当前的位置ADDRESS(不长和纬度),然后将其添加到自动短信响应中以通知一个人我当前无法回复,并且包括字符串地址我目前的位置.我有短信的工作,只需要弄清楚访问gps和拉地址的方法.我见过lat/long的示例代码.也许我需要将lat/long转换为google maps API中的地址?我不确定如何去做.任何建议/代码片段/类似的教程欢迎!谢谢.:)

Oll*_*e C 25

这有两个步骤:

  1. 获取当前位置 - 纬度和经度,使用GPS,网络,最后已知的位置等.Android 位置文档包含示例代码.

  2. 使用Android Geocoder类请求查找以将纬度/经度转换为地址(您可以从中轻松提取城市,国家,街道等).具体来说,您需要使用getFromLocation()方法

注意:

  • getFromLocation()方法返回一组匹配项.在某些情况下,您可以向用户显示一组(比如5)并让他们选择最好的一组,或者您可以使用第一个,假设它是最好的.
  • 请记住,这两个电话都需要时间.GPS /网络可能需要一段时间才能提供位置.同样,调用getFromLocation()可能需要一些时间,因为它通过网络传输到Google Maps API.因此,对各种场景使用大量错误处理并将这些调用移动到单独的线程上以便不锁定应用程序用户界面(查看AsyncTask)至关重要.
  • Geocoder类后端仅出现在Google认可的设备上.因此,任何没有GMail/Market/Maps的设备上的查找基本上都会失败.


War*_*ith 14

答案在这里:http://developer.android.com/reference/android/location/Geocoder.html

您需要创建Geocoder对象并调用 getFromLocation(double latitude, double longitude, int maxResults)

Geocoder gCoder = new Geocoder(myContext);
ArrayList<Address> addresses = gCoder.getFromLocation(123456789, 123456789, 1);
if (addresses != null && addresses.size() > 0) {
    Toast.makeText(myContext, "country: " + addresses.get(0).getCountryName(), Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)