以下のコードは、別のフラグメントから現在の場所を取得するために使用しています。しかし、Google「Google api client parameter is required in android」としてログにエラーが表示されます。これは私のアプリをクラッシュさせているので、正確な問題とその解決方法を知っている人はいますか...
public class GPSTracker extends Activity implements LocationListener, ConnectionCallbacks, OnConnectionFailedListener
{
private final Context mContext;
protected LocationManager locationManager;
boolean canGetLocation = false;
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 1000;
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 0; // 10 meters
// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 20; // 1 minute
Location location; // location
double latitude; // latitude
double longitude; // longitude
SharedData gpsSharedData;
public GoogleApiClient mGoogleApiClient;
private Location mLastLocation;
public GPSTracker(Context context) {
this.mContext = context;
getLocation();
}
/**
* Method to verify google play services on the device
* */
public boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil
.isGooglePlayServicesAvailable(mContext);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode,
GPSTracker.this, PLAY_SERVICES_RESOLUTION_REQUEST)
.show();
} else {
Toast.makeText(getApplicationContext(),
"This device is not supported.", Toast.LENGTH_LONG)
.show();
finish();
}
return false;
}
return true;
}
// Creating google api client object
public synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API).build();
}
public void getLocation() {
// TODO Auto-generated method stub
mLastLocation = LocationServices.FusedLocationApi
.getLastLocation(mGoogleApiClient);
if (mLastLocation != null) {
latitude = mLastLocation.getLatitude();
longitude = mLastLocation.getLongitude();
} else {
System.out
.println("(Couldn't get the location. Make sure location is enabled on the device)");
}
}
public void stopUsingGPS() {
if (locationManager != null) {
locationManager.removeUpdates(GPSTracker.this);
}
}
/**
* Function to get latitude
* */
public double getLatitude() {
if (location != null) {
latitude = location.getLatitude();
}
// return latitude
return latitude;
}
public double getLongitude() {
if (location != null) {
longitude = location.getLongitude();
}
// return longitude
return longitude;
}
public boolean canGetLocation() {
return this.canGetLocation;
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onConnected(Bundle arg0) {
// TODO Auto-generated method stub
// Once connected with google api, get the location
getLocation();
}
@Override
public void onConnectionSuspended(int arg0) {
// TODO Auto-generated method stub
mGoogleApiClient.connect();
}
@Override
public void onConnectionFailed(ConnectionResult arg0) {
System.out
.println("Connection failed: ConnectionResult.getErrorCode() = "
+ arg0.getErrorCode());
}
}