【发布时间】:2015-02-06 21:50:37
【问题描述】:
早上好,我想问一下是否有人和我有同样的问题。 我正在制作一个谷歌地图应用程序,有一天突然不再收集我的位置,我用早期版本测试过这个工作正常,如果我改变了一些东西并且他们没有给我我的位置,我也在其他设备上测试过,什么也没有,它从一天到另一天停止工作。我想知道这是否是由于谷歌帐户开发者控制台或 api 密钥可能过期或其他原因
谢谢。
编辑:
public class BuscarActivity extends ListActivity {
private GoogleMap mMapa;
private LocationManager locationManager;
private Location location;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.buscar_activity);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
mMapa = ((MapFragment) getFragmentManager().findFragmentById(R.id.mapaBuscar))
.getMap();
mMapa.setMyLocationEnabled(true);
locationManager = new LocationManager(this);
getLocalizacion();
mMapa.setOnCameraChangeListener(new OnCameraChangeListener() {
//con el objeto position puedo recuperar todos los datos necesarios
public void onCameraChange(CameraPosition position) {
getLocation();
}
});
}
private void getLocalizacion() {
//I'm used this firstly
//location = mMapa.getMyLocation();
//but now I'm using this although anyone works now
location = locationManager.getLocation();
}
public class LocationManager implements ConnectionCallbacks, OnConnectionFailedListener {
protected GoogleApiClient mGoogleApiClient;
public static Location mLastLocation;
private Context context;
public LocationManager(Context c) {
this.context = c;
buildGoogleApiClient();
onStart();
}
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API).build();
}
@Override
public void onConnected(Bundle connectionHint) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
}
public Location getLocation(){
return mLastLocation;
}
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.i("conection fail", "Connection failed: ConnectionResult.getErrorCode() = "
+ result.getErrorCode());
}
public void onDisconnected() {
Log.i("disconnected", "Disconnected");
}
@Override
public void onConnectionSuspended(int cause) {
Log.i("connection fail", "Connection suspended");
mGoogleApiClient.connect();
}
public void onStart() {
mGoogleApiClient.connect();
}
public void onStop() {
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}
}
【问题讨论】: