2


经过长时间的尝试......我在获取用户当前的 GPS 位置修复方面面临问题。

所以,我想如果我们能以某种方式使用预装的谷歌地图应用程序的修复程序以编程方式获得位置修复Current Location

如果我能够在后台获取位置坐标……这可能吗?
那么,是否有可能通过使用意图或广播接收器以某种方式获取当前位置坐标?(假设地图应用正在广播它......?)

更新#2:终于..我让它工作了..

更新:我的早期代码在这里(PasteBin 链接)

欢迎任何建议.. 谢谢..

4

2 回答 2

2

好的密码破解器,这是我实现位置提取器的方式:

// the listener to listen to the locations
private LocationListener listener = null;
// a location manager
private LocationManager lm  = null;
// locations instances to GPS and NETWORk
private Location myLocationGPS, myLocationNetwork;

// instantiates fields
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
myLocationNetwork = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
myLocationGPS = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
listener = new myLocationListener();

// the listener that gonna notify the activity about location changes
public class myLocationListener implements LocationListener {
    @Override
    public void onLocationChanged(Location location) {
        // "location" is the RECEIVED locations and its here that you should proccess it

        // check if the incoming position has been received from GPS or network
        if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            lm.removeUpdates(this);
        } else {
            lm.removeUpdates(listener);
        }
    }
    @Override
    public void onProviderDisabled(String provider) {
        lm.removeUpdates(this);
        lm.removeUpdates(listener);         
    }
    @Override
    public void onProviderEnabled(String provider) {
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}

正如你所看到的,没有那么多棘手的问题。在您实例化侦听器时,您应该会在 Android 设备的顶部看到 GPS 图标。此外,每当您的位置发生变化时(即当您带着设备走路时),都会调用 OnLocationChanged 方法。

此外,有趣的是,如果您只想获取位置,有几种方法可以做到,所有这些方法都具有不同的返回速度和不同的精度。请同时检查 GoogleGLM(对http://www.google.com/glm/mmap的请求,返回带有您的位置的 json 编码字符串)服务、三角测量和网络位置。在上面的片段中,我展示了如何通过 GPS 和网络获取位置。希望对您有所帮助... :)

于 2013-02-04T19:44:23.370 回答
0

您可以使用被动位置提供程序,但这并不明确意味着它将从 GoogleMaps 获取位置。此外,GoogleMaps 应该正在运行以便接收更新。要从 GoogleMaps 接收位置更新,您还必须具有 ACCES_FINE_LOCATION 权限。此外,您无法启动 GoogleMaps 并强制它在没有用户交互的情况下更新位置。如果您需要精确的用户位置,除了使用 GPS_PROVIDER 之外别无他法。

http://developer.android.com/reference/android/location/LocationManager.html#PASSIVE_PROVIDER

您也可能想阅读 http://developer.android.com/guide/topics/location/strategies.html http://developerlife.com/tutorials/?p=1375

于 2013-02-04T19:27:31.090 回答