Так как 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 - Широта в формате "ГРАД:МИН:СЕК.МСЕК"
class Lib_location
{
public static LocationProvider provider;
public static Location loc;
public static int State;
private class MyLocationListener implements LocationListener
{
public void locationUpdated(LocationProvider provider, Location location)
{
if (location.isValid()) Lib_location.this.loc = location;
}
public void providerStateChanged(LocationProvider provider, int newState)
{
Lib_location.this.State = newState;
}
}
public Lib_location()
{
//хз чего тут написать
}
public void init(int interval, int 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(), interval, timeout, -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 lon, String 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 lon, String lat)
{
return Double.toString(loc.getQualifiedCoordinates().azimuthTo(new Coordinates(Coordinates.convert(lat), Coordinates.convert(lon), loc.getQualifiedCoordinates().getAltitude())));
}
}
Теперь оно хотя бы компилируется
Осталось накатать тестовый пример, проверить работает или нет и вынести функции конвертора Coordinates.convert(....)