我创建了以下类
package com.salvo.weather.android.geolocation;
import android.location.Location;
import android.os.Bundle;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.location.LocationServices;
import com.salvo.weather.android.entity.CurrentGeolocationEntity;
/**
* Created by mazzy on 30/05/15.
*/
public class CurrentGeolocation implements ConnectionCallbacks, OnConnectionFailedListener {
private GoogleApiClient mGoogleApiClient;
private CurrentGeolocationEntity mCurrentGeolocationEntity;
public CurrentGeolocation() {
buildGoogleApiClient();
this.mCurrentGeolocationEntity = new CurrentGeolocationEntity();
}
protected synchronized void buildGoogleApiClient() {
this.mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
public GoogleApiClient getmGoogleApiClient() {
return mGoogleApiClient;
}
@Override
public void onConnected(Bundle bundle) {
this.mCurrentGeolocationEntity.setmLastLocation(LocationServices
.FusedLocationApi
.getLastLocation(this.mGoogleApiClient));
Location mLastLocation = this.mCurrentGeolocationEntity.getmLastLocation();
if (mLastLocation != null) {
this.mCurrentGeolocationEntity.setmLongitude(mLastLocation.getLongitude());
this.mCurrentGeolocationEntity.setmLatitude(mLastLocation.getLatitude());
} else {
// TODO: Add toast
}
}
@Override
public void onConnectionSuspended(int i) {
// The connection to Google Play services was lost for some reason. We call connect() to
// attempt to re-establish the connection.
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
// Refer to the javadoc for ConnectionResult to see what error codes might be returned in
// onConnectionFailed.
}
}
我需要检索上下文才能将其传递到GoogleApiClient中。你怎么说的?这是一个好方法吗?我是Android编程的初学者
答案 0 :(得分:2)
定义全局变量:
Context context = null;
将构造函数更改为:
public CurrentGeolocation(Context context) {
buildGoogleApiClient();
this.context = context;
this.mCurrentGeolocationEntity = new CurrentGeolocationEntity();
}
现在调用Activity:
CurrentGeolocation obj = new CurrentGeolocation(this);
或片段:
CurrentGeolocation obj = new CurrentGeolocation(getActivity());