您好我想创建一个使用GoogleApiClient的Google地方的服务类,它似乎没有连接,因此无法从中获取地点。
我有方法callPlaceDetectionApi来获取那些地方,在一个活动中它工作正常但在服务类中没有
public class LocationService extends Service implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {`private void callPlaceDetectionApi() throws SecurityException {
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
for (PlaceLikelihood placeLikelihood : likelyPlaces) {
Log.i(LOG_TAG, String.format("Place '%s' with " + "likelihood: %g", placeLikelihood.getPlace().getName(),
placeLikelihood.getLikelihood()));
Toast.makeText(mContext, "nombre:" + placeLikelihood.getPlace().getName(),Toast.LENGTH_LONG).show();
}
likelyPlaces.release();
}
});
}
这就是我如何构建GoogleApliClient
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(LocationService.this)
.addConnectionCallbacks(LocationService.this)
.addOnConnectionFailedListener(LocationService.this)
.addApi(LocationServices.API)
.addApi(Places.PLACE_DETECTION_API)
.build();
}
我尝试添加.enableAutoManage(LocationService.this,GOOGLE_API_CLIENT_ID,这个),因为当我在一个活动上测试它时,我有它,但是第一个参数是FargmentActivity,因为我在服务类中它会抛出错误。
在我的OnLocationChanged方法上我试图调用“callPlaceDetectionApi()”但是因为它连接它没有做任何事情
if (mGoogleApiClient.isConnected()) {
callPlaceDetectionApi();
}
修改
我解决了我遇到的问题,我使用了错误的监听器导入,你必须使用
import com.google.android.gms.location.LocationServices;
我使用的是Android LocationServices而不是Google Api LocationService。