0
无论我做什么,我都无法在没有启用wifi的情况下获取当前位置。启用了无线网络时,该代码的工作只:无法获取没有wifi的位置
if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
provider = LocationManager.GPS_PROVIDER;
else if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
provider = LocationManager.NETWORK_PROVIDER;
else if(locationManager.isProviderEnabled(LocationManager.PASSIVE_PROVIDER))
provider = LocationManager.PASSIVE_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
当无线网络被禁用,location
为空。
而下面的代码永远不会奏效(即使无线网络启用):
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
在onCreate()
:
buildGoogleApiClient();
在onStart()
:
mGoogleApiClient.connect();
而这里的onConnected()
:
@Override
public void onConnected(Bundle connectionHint) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if(mLastLocation == null)
{
disableButtons();
}
else
{
String userLocation = FindLocation.getLocatoinName(mLastLocation);
userLocationDetails = new LocationStruct(mLastLocation.getLatitude(), mLastLocation.getLongitude(), userLocation);
}
}
Inside onConnected()
,mLastLocation
始终为空。
我试过两部手机:联想A820 API 16和三星Galaxy S4 API 19。两部手机的结果相同。
'onLocationChanged() '永远不会叫... –
@Alaa M.你可以发布你的整个活动,你试试吗? –