所以我有这个代码:
package com.entu.bocterapp; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.os.Bundle; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; public class LocationManager implements GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener { private Context mContext; private GoogleApiClient mGoogleApiClient; private Location mLastLocation; private LocationRequest mLocationRequest; public LocationManager(Context context) { mContext = context; // if (checkIfGooglePlayServicesAreAvailable()) { //Get Access to the google service api buildGoogleApiClient(); mGoogleApiClient.connect(); } else { //Use Android Location Services //TODO: } } public Location getCoarseLocation() { if (mLastLocation != null) { return mLastLocation; } else return null; } private synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(mContext) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); } private boolean checkIfGooglePlayServicesAreAvailable() { int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(mContext); if (errorCode != ConnectionResult.SUCCESS) { GooglePlayServicesUtil.getErrorDialog(errorCode,(RecentSightings) mContext,0).show(); return false; } return true; } @Override public void onConnected(Bundle bundle) { Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); if (location != null) { mLastLocation = location; Toast.makeText(mContext,location.getLongitude() + "," + location.getLatitude() + " : " + location.getAccuracy(),Toast.LENGTH_LONG).show(); } } @Override public void onConnectionSuspended(int i) { Toast.makeText(mContext,"suspended",Toast.LENGTH_LONG).show(); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { } }
我想在这个类中获取位置,但onConnected()永远不会被调用(我等了1-2分钟).我使用调试器,它说谷歌播放服务可用.
有谁知道我做错了什么?我被困在这里几个小时,阅读一切,无法让它工作.
干杯!
解决方法
你必须打电话
mGoogleApiClient.connect();