我正在开发一个同时使用谷歌地图和谷歌位置服务(用于地理围栏)的应用程序。
为了进行测试,我想这样做,以便当我点击地图上的某个点时,位置客户端会获得该点的模拟位置。代码的相关部分是:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mLocationClient = new LocationClient(this, this, this);
mLocationRequest = LocationRequest.create();
mLocationRequest.setInterval(1000);
mLocationRequest.setFastestInterval(1000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
@Override
protected void onResume() {
super.onResume();
GoogleMap gmap = mMapFragment.getMap();
gmap.setOnMapClickListener(this);
}
public void onConnected(Bundle connectionHint) {
mLocationClient.setMockMode(true);
mLocationClient.requestLocationUpdates(mLocationRequest, this);
...
}
@Override
public void onMapClick(LatLng point) {
Location loc = new Location("flp");
loc.setLatitude(point.latitude);
loc.setLongitude(point.longitude);
loc.setAccuracy(1);
loc.setTime(System.currentTimeMillis());
mLocationClient.setMockLocation(loc);
Toast.makeText(this, "Touch " + loc.getLatitude() + " - " + loc.getLongitude(), Toast.LENGTH_SHORT).show();
}
@Override
public void onLocationChanged(Location loc) {
Toast.makeText(this, "LocChange " + loc.getLatitude() + " - " + loc.getLongitude(), Toast.LENGTH_SHORT).show();
}
地图点击监听器有效:当我触摸地图时,我得到了“触摸”吐司。 位置侦听器也可以工作:如果我没有激活位置客户端的模拟模式,它会从GPS接收正常的位置更新(显示“LocChange”吐司)。
如果我激活模拟模式,我只会获得“触摸”祝酒而不是“LocChange”。 Gofences也未激活。 这让我相信问题是以某种方式发送/接收模拟位置。
我错过了什么......?