Sony Ericsson, GPS i Java
2009-06-20, Sobota 12:20:19 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC
Ktoś by mógł pomyśleć, iż poniższy fragment kodu w Javie ME wykonany na telefonie Sony Ericsson z wbudowanym GPS-em przekaże poprawne dane NMEA 0183 do zmiennej nmea.
package net._4zal.gps; import javax.microedition.location.*; public class GPS implements LocationListener { // ... public void locationUpdated(LocationProvider lp, Location location) { double lon = 0, lat = 0, alt = 0; if (location.isValid()) { QualifiedCoordinates c = location.getQualifiedCoordinates(); lon = c.getLongitude(); lat = c.getLatitude(); alt = c.getAltitude(); } String nmea = location.getExtraInfo( "application/X-jsr179-location-nmea"); } // ... }
Miałby on rację, ale tylko w pewnym zakresie. Kod ten będzie niestety niekompletny, a zawierać będzie jedynie sentencje typu GSV. Na przykład:
$GPGSV,3,1,10,03,73,236,,06,73,185,,22,63,139,,19,53,292,43*7A
Są to informacje dot. m.in. położenia wykrytych satelitów GPS. Zaś to, co dla nas najważniejsze, czyli np. GLL (szerokość i długość geograficzna), nie znajdzie się w zmiennej nmea. Oznacza to, że dane NMEA tego typu należy samodzielnie wygenerować bazując na tym, co znajdziemy w klasie Location. Słodko, prawda?
$GPGLL,54.38379406929016,N,18.619401454925537,E,225444,A,*0F
I tym oto sposobem, chcąc stworzyć program w Javie, który byłby w stanie udostępnić wewnętrzny moduł GPS telefonu zewnętrznym urządzeniom poprzez Bluetooth (z wykorzystaniem NMEA) należy się nieco napracować. Przynajmniej w przypadku telefonów Sony Ericsson. Bazować można na kodzie javowej wersji GPSd (opartej o fragment Barbelo) - zbudowanie aplikacji wymaga jedynie Wireless Toolkita 2.5.2. Może w wolnej chwili pobawię się w stworzenie wersji pod SE.
Na marginesie - na dłuższą metę nie warto się bawić z zabawkami pokroju wspomnianych telefonów z GPS-em. Zewnętrzny moduł zapewnia zdecydowanie wyższy komfort użytkowania.
2009-06-21, Niedziela 15:00:01 +0200
> Sony Ericsson
> poprawne dane
Can't happen.
2009-06-21, Niedziela 15:08:22 +0200
@Michał: Tja, irytujące ustrojstwo. A jeszcze za czasów firmware od Orange nie dało się z tego nawet sensownie telefonować.
A tak swoją drogą - nie tylko SE ssie. Ostatnio bawiłem się chińskim modułem GPS-a (oznaczenie GPS-009 - widać takie u różnych producentów) z interfejsem Bluetooth i przy próbie zmiany prędkości portu szeregowego... zaczął sypać binarną sieczką. Aby było zabawniej - ustawienie sobie zapamiętał i nie pozwolił na sensowny powrót do wartości standardowych. Bateria przylutowana do płytki, brak sprzętowego wyłącznika/resetu.
Baterię rozładowywałem przez ponad dzień :>
2009-06-21, Niedziela 20:38:01 +0200
Ach, porty szeregowe i równoległe. Z tymi to dopiero cuda są. Nagle ci przestaje всё działać i nawet nie wiesz co jest grane.
Jak mi PLIP przestał działać (po prostu jedna maszyna drugiej nie odpowiadała) kombinowałem z przeróżnymi ustawieniami, zmianą wersji jajka, nawet kabel sprawdzałem miernikiem (oczywiście w miarę możliwości, jakiegoś pojedynczego zwarcia mogłem nie zauważyć) — i nic nie poradziłem.
Zmontowałem więc sobie terminal przez port szeregowy, jako alternatywę. Przez jakiś czas działał ładnie, aż w końcu przestał — i pluje tylko binarną sieczką, pomimo że ustawienia portu wydają się poprawne (i takie same po obu stronach).
2009-07-05, Niedziela 16:07:01 +0200
Can you direct me to the complete example?
I don't speak Polish :(
Thanks!
2009-07-05, Niedziela 16:11:14 +0200
Hi slevi! Take a look at the GPSd4SE - GPS.java file :]
2009-07-07, Wtorek 07:13:31 +0200
Nice!
Thanks a lot!