Blackberry - измените широту и долготу на устройстве, чтобы протестировать приложение

Я хочу протестировать свое приложение на устройстве. Можно ли жестко запрограммировать значения широты и долготы где-нибудь в настройках устройства, чтобы приложение считывало их, а не текущее местоположение?

Я хочу протестировать свое приложение в разных местах, кроме моего текущего.


person lostInTransit    schedule 28.05.2009    source источник


Ответы (2)


Внутри макета 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-приемник для bluetooth (например)
  • настройте какой-нибудь gps-сервер с открытым исходным кодом на своем рабочем столе для получения данных о местоположении через Bluetooth
  • изменить конфигурацию / код gps-сервера на макет данных о местоположении

Другие варианты

Есть возможность неконтролируемого изменения данных GPS местоположения путем экранирования GPS приемника каким-либо радиоматериалом (например, алюминиевой фольгой или что-то в этом роде) :)

person Maksym Gontar    schedule 03.06.2009
comment
Спасибо за ответ. Я не хочу тестировать свой код. Я хочу протестировать файл трески. У меня нет доступа к коду. Подскажите, пожалуйста, как изменить мое местоположение в симуляторе BB? благодаря. - person lostInTransit; 03.06.2009

В симуляторе BB вы можете перейти в Simulate> GPS Location. Нажмите кнопку «Добавить» и введите имя, широту и долготу. Нажмите «Сохранить», и симулятор начнет передавать приложениям ваше новое местоположение. Обратите внимание, что любое местоположение, отображаемое в раскрывающемся списке, будет сообщаться имитатором.

person Adam B    schedule 08.06.2009