1

我想在设备上测试我的应用程序。是否可以在设备设置中的某处硬编码纬度和经度值,以便应用程序读取这些值而不是当前位置?

我想针对当前位置以外的不同位置测试我的应用程序。

4

2 回答 2

5

在 BB 模拟器中,您可以转到 Simulate > GPS Location。单击添加按钮并输入名称、纬度和经度。单击保存,模拟器将开始将您的新位置提供给应用程序。请注意,下拉菜单中显示的任何位置都是模拟器将报告的位置。

于 2009-06-08T16:36:04.970 回答
4

GPS模型内部

如果您有权访问您的应用程序代码,您始终可以为LocationProvider创建一个模型实现,以便它从文件或 RecordStore 读取位置和速度数据并将其作为Location返回,例如

public class MockupLocationProvider extends LocationProvider {

    public MockupLocationProvider() {
        //prepare a file or RecordStore with locations here
    }

    public Location getLocation(int arg0) throws LocationException,
            InterruptedException {      
        //read data from file or RecordStore
        double latitude = 321;
        double longitude = 34;
        float altitude = 21;
        //create and return location
        Location result = new GPSLocation(latitude, 
            longitude, altitude);       
        return result;
    }

    public int getState() {
        // mockup location provider always available 
        return LocationProvider.AVAILABLE;
    }

    public void reset() {
        // your code        
    }

    public void setLocationListener(LocationListener listener, 
            int interval, int timeout, int maxAge) {
        // your code        
    }
}

和您的位置模型

public class GPSLocation extends Location {    
    double _latitude, _longitude;
    float _altitude, _horAcc = 0, _verAcc = 0, _speed;
    public GPSLocation(double lat, double lon, float alt) {
        init(lat, lon, alt);
    }    
    public GPSLocation(double lat, double lon, float alt, float spd) {
        init(lat, lon, alt);
        _speed = spd;
    }    
    private void init(double lat, double lon, float alt) {
        _latitude = lat;
        _longitude = lon;
        _altitude = alt;
    }    
    public QualifiedCoordinates getQualifiedCoordinates() {
        QualifiedCoordinates c = new QualifiedCoordinates(_latitude,
                _longitude, _altitude, _horAcc, _verAcc);
        return c;
    }    
    public float getSpeed() {
        return _speed;
    }    
    public String toString() {
        String result = "Lat:" + String.valueOf(_latitude) + "|Lon:"
                + String.valueOf(_longitude) + "|Alt:"
                + String.valueOf(_altitude);
        return result;
    }
}

然后在屏幕上的某个地方

    MockupLocationProvider gpsProvider = new MockupLocationProvider();
    GPSLocation loc = (GPSLocation)gpsProvider.getLocation(0);
    add(new RichTextField(loc.toString())); 

外部 GPS 样机

另一种选择是通常模拟 GPS 信号。
步骤是:

  • 为蓝牙配置设备 GPS 接收器(例如)
  • 在您的桌面上设置一些开源 gps 服务器以通过蓝牙生成位置数据
  • 更改 gps 服务器的配置/代码以模拟位置数据

其他选项

通过用一些无线电材料(如铝箔等)屏蔽 gps 接收器,有可能不受控制地改变位置 gps 数据:)

于 2009-06-03T06:15:36.853 回答