没有获得GPS位置,通过谷歌地图显示当前位置

时间:2014-08-07 05:39:16

标签: android google-maps gps

我没有在我的代码中获取GPS位置,而Google地图显示当前位置甚至更新,我正在启动服务,内部服务将locationListener注册到locationManager,处理onLocationChanged回调方法,在AndroidManifest中进行输入。 xml甚至。显示onCreate方法的日志 下面是我的代码,你能告诉我我在哪里做错了吗?

public class LocationService extends Service implements LocationListener {
private static final long MIN_TIME_INTERVAL_FOR_GPS_LOCATION = 100;
private static final float MIN_DISTANCE_INTERVAL_FOR_GPS_LOCATION = 1.0f;
private static String TAG = LocationService.class.getSimpleName();
private LocationManager locationManager;
private static Location mCurrentLocation;

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    Log.i(TAG, "onCreate...");

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_INTERVAL_FOR_GPS_LOCATION, MIN_DISTANCE_INTERVAL_FOR_GPS_LOCATION, this);
    mCurrentLocation = getBestLocation();
}

private Location getBestLocation() {
    Log.i(TAG, "getBestLocation...");
    Location location_gps = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    Location location_network = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

    // If both are available, get the most recent
    if (location_gps != null && location_network != null) {
        return (location_gps.getTime() > location_network.getTime()) ? location_gps : location_network;
    } else if (location_gps == null && location_network == null) {
        return null;
    } else {
        return (location_gps == null) ? location_network : location_gps;
    }
}

@Override
public void onLocationChanged(Location location) {
    Log.i(TAG, "onLocationChanged...");
    Toast.makeText(LocationService.this, "Location Found", Toast.LENGTH_SHORT).show();
    mCurrentLocation = location;
}

@Override
public void onProviderDisabled(String provider) {
}

@Override
public void onProviderEnabled(String provider) {
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}

public static Location getmCurrentLocation() {
    return mCurrentLocation;
}

public static void setmCurrentLocation(Location mCurrentLocation) {
    LocationService.mCurrentLocation = mCurrentLocation;
}

@Override
public void onDestroy() {
    super.onDestroy();
    Log.i(TAG, "onDestroy...");
    locationManager.removeUpdates(this);
}
}

1 个答案:

答案 0 :(得分:1)

您的locationManager仅使用GPS提供商调用requestLocationUpdates
我认为你的设备无法捕获GPS卫星信号,在室内的状态。
因此,您也应该使用网络提供商调用requestLocationUpdates。

接下来的两个链接可能对您有所帮助 http://developer.android.com/guide/topics/location/strategies.html
http://developer.android.com/training/location/receive-location-updates.html