模拟地点和生产

时间:2014-09-20 22:26:47

标签: android android-location

我正在使用用户的位置并使用模拟位置进行测试,但我无法弄清楚在上传到制作时(Google Play)我的代码应该如何显示。我的意思是,现在我正在开发和QA-ing,我的代码包含模拟位置生成,清单包含ACCESS_MOCK_LOCATION权限请求。

在生产中请求这些权限听起来很奇怪。我是否希望在上传我的应用之前删除处理模拟位置的权限和代码?此外,在QA-ing时,我正在使用启用了模拟位置设置的开发人员模式设备。

我已经阅读了Google的Testing Using Mock Locations指南,但是尽管有以下声明,我仍然不明白它是如何完成的:“既然您可以从生产应用程序外部发送模拟数据,那么您没有在发布之前禁用或删除测试代码。“。

也许我的误解是因为我编码它的方式,所以这里是:

public class MainActivity extends FragmentActivity implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener {
    private LocationClient mLocationClient; 

    protected void onCreate(Bundle savedInstanceState) {
        ...
        mLocationClient = new LocationClient(this, this, this);
    }
    protected void onStart() {
        super.onStart();
        mLocationClient.connect();
    }
    protected void onStop() {
        mLocationClient.disconnect();
        super.onStop();
    }
    private Location createLocation(double lat, double lng, float accuracy) {
        // Create a new Location
        Location newLocation = new Location("flp");
        newLocation.setLatitude(lat);
        newLocation.setLongitude(lng);
        newLocation.setAccuracy(accuracy);
        return newLocation;
    }
    public void onConnected(Bundle arg0) {
        Location currentLocation = mLocationClient.getLastLocation();
        //null is my indication to use mocks
        if(currentLocation==null){
            if(isMockSettingsON(getApplicationContext())){
                mLocationClient.setMockMode(true);
                currentLocation = createLocation(LAT, LON, ACCURACY);
                mLocationClient.setMockLocation(currentLocation);
            }
        }
    }   
}

0 个答案:

没有答案