forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_location jsr179 (http://forum.boolean.name/showthread.php?t=14285)

NeiroN 23.02.2011 17:05

Lib_location: Определение местоположения по GPS jsr179
 
Вложений: 1
Так как Java знаю не очень - выкладываю вначале исходник для проверки.
Для написания либы я использовал доки по javax.microedition.location


Код:

public static void init(int interval, int timeout)
procedure init(Interval, Timeout :integer); - инициализация GPS
    Interval - интервал обновления координат секунд
    Timeout - таймаут получения ответа секунд

public static int get_state()
function get_state():integer; - возвращает состояние

public static int is_location_valid()
function is_location_valid():integer; - проверка текущих координат
    1 - хорошие,
    0 - плохие

public static float get_speed()
function get_speed():float; - теущая скорость (единицы измерения?)

public static float get_course()
function get_course():float; - направление движения в градусах

public static long get_time()
function get_time():LongInt; - время в которое было выполнено измерение милисекунд.

public static String get_Altitude()
function get_Altitude():String; - высота над уровнем моря в метрах.

public static String Latitude()
function get_Latitude():String; - Широта в десятичном формате

public static String Longitude()
function get_Longitude():String; - Долгота в десятичном формате

public static String get_Latitude()
function get_Latitude():String; - Широта в формате "ГРАД:МИН:СЕК.МСЕК"

public static String get_Longitude()
function get_Longitude():String; - Долгота в формате "ГРАД:МИН:СЕК.МСЕК"

public static String get_distance_to(String lon, String lat)
function get_distance_to(lon, lat:String):String; - растояние от текущей точки до заданной
    lon - Долгота в формате "ГРАД:МИН:СЕК.МСЕК"
    lat - Широта в формате "ГРАД:МИН:СЕК.МСЕК"

public static String get_azimuth_to(String lon, String lat)
function get_azimuth_to(lon, lat:String):String; - азимут от текущей точки до заданной - в градусах
    lon - Долгота в формате "ГРАД:МИН:СЕК.МСЕК"
    lat - Широта в формате "ГРАД:МИН:СЕК.МСЕК"

PHP код:

class Lib_location 
{
    public static 
LocationProvider provider;
    public static 
Location loc;
    public static 
int State;
    private class 
MyLocationListener implements LocationListener
    
{
        public 
void locationUpdated(LocationProvider providerLocation location)
        {
        if (
location.isValid())    Lib_location.this.loc location;
        }
        public 
void providerStateChanged(LocationProvider providerint newState)
        {
        
Lib_location.this.State newState;
        }
    }
    
    public 
Lib_location()
    {
    
//хз чего тут написать
    
    
    
}
    
    public 
void init(int intervalint timeout)
    {
    try
    {
        
Criteria criteria = new Criteria();
        
criteria.setPreferredResponseTime(timeout*100);
        
criteria.setHorizontalAccuracy(1000);
        
criteria.setVerticalAccuracy(1000);
        
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
        
provider LocationProvider.getInstance(criteria);
        
provider.setLocationListener(new MyLocationListener(), intervaltimeout, -1);
        
State provider.getState();
        
loc provider.getLocation(timeout);
    }catch(
Exception e) {}
    }

    public static 
int get_state() {
        return 
State;
    }
    
    public static 
int is_location_valid()
    {
        if(
loc.isValid()){return 1;}else{return 0;}
    }

    public static 
float get_speed() {
        return 
loc.getSpeed();
    }

    public static 
float get_course()
    {
        return 
loc.getCourse();
    }

    public static 
long get_time()
    {
        return 
loc.getTimestamp();
    }

    public static 
String get_Altitude()
    {
        return 
Double.toString(loc.getQualifiedCoordinates().getAltitude());
    }
    
    public static 
String Latitude()
    {
        return 
Double.toString(loc.getQualifiedCoordinates().getLatitude());
    }

    public static 
String Longitude()
    {
        return 
Double.toString(loc.getQualifiedCoordinates().getLongitude());
    }
    
    public static 
String get_Latitude()
    {
        return 
Coordinates.convert(loc.getQualifiedCoordinates().getLatitude(), Coordinates.DD_MM_SS);
    }

    public static 
String get_Longitude()
    {
        return 
Coordinates.convert(loc.getQualifiedCoordinates().getLongitude(), Coordinates.DD_MM_SS);
    }

    public static 
String get_distance_to(String lonString lat)
    {
        return 
Double.toString(loc.getQualifiedCoordinates().distance(new Coordinates(Coordinates.convert(lat), Coordinates.convert(lon), loc.getQualifiedCoordinates().getAltitude())));
    }

    public static 
String get_azimuth_to(String lonString lat)
    {
        return 
Double.toString(loc.getQualifiedCoordinates().azimuthTo(new Coordinates(Coordinates.convert(lat), Coordinates.convert(lon), loc.getQualifiedCoordinates().getAltitude())));
    }



Теперь оно хотя бы компилируется :-D
Осталось накатать тестовый пример, проверить работает или нет и вынести функции конвертора Coordinates.convert(....)

ViNT 23.02.2011 18:50

Ответ: Lib_location jsr179
 
Так сходу принципиальных косяков не видно, нужно компилить и проверять.

NeiroN 23.02.2011 19:46

Ответ: Lib_location jsr179
 
у меня сомнения на счет interface и инициализации LocationListener, автор выложивший здесь прогу по работе с jsr179 - использовал цикл, который сжирал память через бесконечно возрастающую переменную - поэтому я решил использовать стандартное средство обновления координат и состояния

ViNT 23.02.2011 20:52

Ответ: Lib_location jsr179
 
Что-то я упустил этот interface...
Оно нормально компилируется? Я такие конструкции использовать не пробовал.

Phantom 23.02.2011 21:17

Ответ: Lib_location jsr179
 
NeiroN, это не я тот Автор? Я вроде выкладывал здесь прогу такую. И у меня где-то там была утечка памяти. Но я так и не разобрался до конца где.

NeiroN 23.02.2011 22:02

Ответ: Lib_location jsr179
 
да это вы, там с переменными намудрено - при первичном анализе заметно увеличение переменой time, также могут быть проблемы в классе net - не стал ковыряться - пердпочитаю обработку событий : верчению в цикле с ожиданием.

Либу поправил - можно тестить


Часовой пояс GMT +4, время: 08:36.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot