我想在我的Android項目,並以做簡單的檢索設備的位置,所以我使用的播放服務的方法:FusedLocationApi.getLastLocation總是空
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(MainSearchActivity.this)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle bundle){
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if(location == null){
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
lastLocation = location;
}
});
}
}
@Override
public void onConnectionSuspended(int i){
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult connectionResult){
if(connectionResult.hasResolution()){
try {
// Start an Activity that tries to resolve the error
connectionResult.startResolutionForResult(MainSearchActivity.this, CONNECTION_FAILURE_RESOLUTION_REQUEST);
}catch(IntentSender.SendIntentException e){
e.printStackTrace();
}
}else{
Utils.logger("Location services connection failed with code " + connectionResult.getErrorCode(), Utils.LOG_DEBUG);
}
}
})
.addApi(LocationServices.API)
.build();
mGoogleApiClient.connect();
}
public Location retrieveLastLocation(){
Location loc = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if(loc == null)
{
}
return loc; //TODO: What if loc is null?
}
但LOC變量總是空。在不同的手機上,每次都是如此。此外,我試圖在onLocationChanged中分配的lastLocation永遠不會更改。始終爲空。
這些是我的應用程序
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.vogella.android.locationapi.maps.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
我只是不明白它設置權限:爲什麼不能LocationServices檢索位置?我有三個啓用的所有地理位置設置deviced我在測試: -/
感謝您的幫助
我請你,請看一看這個答案http://stackoverflow.com/a/35833552/3278589 – Subho 2017-02-17 13:52:00