无法通过GPS获得经度和纬度,但Android中的网络提供商是否能够获得成功?

时间:2011-06-14 14:49:03

标签: android gps

当设备通过网络提供商获取位置时,我可以获得经度和纬度并将它们转换为geopoint,但是当我使用gps时它会失败。我该怎么做才能解决这个问题?

public void onCreate(Bundle savedInstanceState) {
...

mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocation = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (mLocation != null) {

            gp1 = getGeoByLocation(mLocation);
            gp2 = gp1;

            refreshMapView();

            if( !mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
                mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000,
                        10, mLocationListener);
            }else{
                mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000,
                                10, mLocationListener);
            }

    private GeoPoint getGeoByLocation(Location location) {
        GeoPoint gp = null;
        try {
            if (location != null) {
                double geoLatitude = location.getLatitude() * 1E6;
                double geoLongitude = location.getLongitude() * 1E6;
                gp = new GeoPoint((int) geoLatitude, (int) geoLongitude);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return gp;
    }

2 个答案:

答案 0 :(得分:1)

如果在“设置”菜单中禁用了

isProviderEnabled将为false。如果启用了GPS,您应该会在通知/状态栏上看到一个图标。

答案 1 :(得分:1)

GPS速度慢得多,通常无法使用。如果某人在建筑物中,例如开发软件的办公室,或者甚至是软件开发人员的房屋/公寓,那么很有可能您无法获得GPS修复。我们的应用程序在很大程度上依赖于位置,我们获得的大部分位置坐标都来自手机信号塔或wifi三角测量,两者都显示为NETWORK_PROVIDER。