来自地图点击的Android模拟位置似乎不起作用

时间:2013-12-13 10:34:45

标签: android google-maps unit-testing google-api location

我正在开发一个同时使用谷歌地图和谷歌位置服务(用于地理围栏)的应用程序。

为了进行测试,我想这样做,以便当我点击地图上的某个点时,位置客户端会获得该点的模拟位置。代码的相关部分是:

@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也未激活。 这让我相信问题是以某种方式发送/接收模拟位置。

我错过了什么......?

0 个答案:

没有答案