黑莓 - 在设备上更改经度和经度以测试应用

时间:2009-05-28 11:05:24

标签: blackberry java-me gps jsr179

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

我想在我当前位置以外的其他位置测试我的应用。

2 个答案:

答案 0 :(得分:5)

在BB模拟器中,你可以去模拟> GPS位置。单击“添加”按钮,然后输入名称,纬度和经度。单击“保存”,模拟器将开始将新位置提供给应用程序。请注意,下拉列表中显示的任何位置都是模拟器将报告的位置。

答案 1 :(得分: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接收器 蓝牙(例如)
  • 设置一些 桌面上的opensource gps服务器 生成位置数据 蓝牙
  • 更改配置/代码 gps服务器到模拟位置数据

其他选项

通过使用某些无线电材料(如铝箔等)屏蔽gps接收器,可能会对位置gps数据进行不受控制的更改:)