Problem z JSR 179 (Localization API) na WM

  • 1 Odpowiedzi
  • 17280 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

Problem z JSR 179 (Localization API) na WM
« dnia: Styczeń 12, 2011, 21:12:55 »
Witam.
Próbuję napisać program w J2ME pod WM 6.5 (konkretnie HTC Leo) do lokalizacji pozycji z wbudowanego odbiornika GPS. Problem polega na tym, że WM nie wspiera pakietu Javy JSR 179 odpowiadającej za API lokalizacji. Czy znacie może jakiś sposób na dołączenie tej paczki do środowiska WM (emulator Javy JBlend). Jeśli nie to czy istnieje jakiś inny sposób na komunikację z wbudowanym odbiornikiem GPS w J2ME?
Wiem, że można by to zrobić w C#, ale póki co jeszcze nic nie pisałem w tym języku, poza tym J2ME była by bardziej uniwersalna.
Poniżej zamieszczam podstawowy kod który wykorzystuję do odczytania długości i szerokości geograficznej z odbiornika GPS. Działa on na pewno z nokią 5230, ale zapewne również z innymi urządzeniami opartymi o symbiana, gdyż ten ma dołączony pakiet JSR 179.

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.location.*;

public class GPS_Speedometer extends MIDlet implements CommandListener {
    private Form mMainForm;
    private StringItem message;

    public GPS_Speedometer() {
        message = new StringItem("",""); //wiadomość tekstowa wyświetlana na formularzu (dla pozycji GPS)
        Retriever ret = new Retriever(this); //inicjalizacja wątku odbiornika GPS
        ret.start();
        mMainForm = new Form("GPS Speedometer");
        mMainForm.append(new StringItem(null, "GPS Speedometer!\n"));
        mMainForm.append(message);
        mMainForm.addCommand(new Command("Wyjście", Command.EXIT, 0));
        mMainForm.setCommandListener(this);
    }

    public void startApp() {
        Display.getDisplay(this).setCurrent(mMainForm);
    }

    public void pauseApp() {}

    public void destroyApp(boolean unconditional) {}

    public void commandAction(Command c, Displayable s) {
    notifyDestroyed();
    }

    public void displayString(String string) {
        message.setText(string);
    }
    class Retriever extends Thread { //wątek pobierający współrzedne lokalizacji
    private GPS_Speedometer midlet;
    public Retriever(GPS_Speedometer midlet) {
            this.midlet = midlet;
      }
        public void run() {
            try
            {
                while (true){
                    checkLocation();
                    Thread.sleep(5000); // refresh in 5 second period
                }
            }
            catch (Exception ex)
            {
                ex.printStackTrace();
                midlet.displayString(ex.toString());
            }
        }

    public void checkLocation() throws Exception {
            String string;
            Location location;
            LocationProvider location_provider;
            Coordinates c;
            Criteria cr = new Criteria();
            cr.setHorizontalAccuracy(500);
            location_provider = LocationProvider.getInstance(cr);
            location = location_provider.getLocation(60);
            c = location.getQualifiedCoordinates();
            if(c != null ) {
                double lat = c.getLatitude();
                double lon = c.getLongitude();
                double alt = c.getAltitude();
                string = "\nSzerokość: " + lat + "\nDługość: " + lon + "\nWysokość: " + alt;
            } else {
                string ="Błąd ustalania pozycji.";
            }
            midlet.displayString(string);
        }
    }
}

Będę niezmiernie wdzięczny za wszelką pomoc i sugestie.
Pozdrawiam
« Ostatnia zmiana: Styczeń 12, 2011, 21:21:54 wysłana przez mariuszsz18 »

*

Offline miba

  • *****
  • 4050
  • Płeć: Mężczyzna
  • Sprzęt: Toshiba G900, doszedł x51v
Odp: Problem z JSR 179 (Localization API) na WM
« Odpowiedź #1 dnia: Styczeń 12, 2011, 22:37:54 »
Jak chcesz pisać na poważnie pod WM to zapomnij o platformie java. Specyfikacje J2ME to kwestia maszyny dołączonej przez producenta PDA albo takiej którą sobie zainstalujesz. Sam WM javy nie wspiera, zresztą to naturalne, bo ona robi MS konkurencję do net-a.
To tylko w teorii jest pisaniekodu bardziej uniwersalne pod PDA. J2ME jest zresztą bardziej pod kątem prostych aparatów pomyślana. Dla Ciebie jednak C# jest najlepszym wyborem.
Łatwo od javy przejść do niego dla kogoś kto umie programować.