forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Предположительно, JSR-179 : javax.microedition.location (http://forum.boolean.name/showthread.php?t=13174)

IDOL 1234 20.08.2010 14:46

Предположительно, JSR-179 : javax.microedition.location
 
Хотелось бы получить координаты со встроенного GPS. Нет ли у кого - нибудь русифицированной спецификации по этой апи?

SBJoker 20.08.2010 15:39

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
Обычно все GPS работают одинаково - а именно - открывает COM-порт на которм подключен GPS и читаем от туда данные.

Формат данных: NMEA

psih1 20.08.2010 15:47

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
а либа есть для работы с этим портом ?

ViNT 20.08.2010 15:56

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
Либа для работы с COM-ом есть, но если есть пакет в j2me, нужно попробовать с ним разобраться, чтобы протокол с нуля не реализовывать, да и с правами доступа могут быть грабли.

IDOL 1234 20.08.2010 16:12

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
MIDP 2.1, насколько я знаю, вообще не поддерживает СОМ. А у меня именно он, + встроенный GPS. Во всех приложениях, которые пытаются с ним работать, содержится куча жутко вложенных папок, так что ковырять их, имхо, бесполезно. Нужно копать jsr 179...

Нашёл документацию на английском
http://www-users.cs.umn.edu/~czhou/d...e-summary.html

Phantom 20.08.2010 18:26

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
Вложений: 1
Вот делал для своей Нокии 5800. Хотел, чтобы мои координаты отправляло на сервер. Работает, но где-то то ли утечка памяти, то ли что-то ещё, я уже не помню, но спустя сколько-то часов беспрерывной работы, приложение вылетает с эксепшеном.:)

IDOL 1234 20.08.2010 22:31

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
ой йо... как всё запутанно. Особенно в a.java/
Сейчас буду копать

не компилируется :( 24 errors

похоже, у меня какая-то зараза пожрала jvm...

Сейчас буду компу мозги вправлять. Так что извините, какое-то время меня не будет

Да... Ещё вопрос, пока я не начал экзекуцию: NOKIA 2710 содержит компас, пока что я видел его в работе только в стандартных картах. Его как-нибудь можно прослушивать? Сенсоры вроде не поддерживаются.

SBJoker 21.08.2010 00:20

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
так компас вроде программно..по гпс сделан.
Определяем место потом движемся и ещё одно..у нас есть вектор нашего положения, и по координатам знаем где север - рисуем стрелочку.

Tadeus 21.08.2010 00:50

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
Цитата:

Сообщение от SBJoker (Сообщение 159201)
так компас вроде программно..по гпс сделан.
Определяем место потом движемся и ещё одно..у нас есть вектор нашего положения, и по координатам знаем где север - рисуем стрелочку.

не факт, видал мобилу где натуральный магнитный встроен :)

IDOL 1234 21.08.2010 19:18

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
компас магнитный

xmoonlight 26.10.2010 03:40

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
IDOL, я понимаю, что ты с Nokia 2710 Navigator Edition мучаешься...
У меня возникли сразу вопросы по этой теме: хотел приобрести себе для трекинга автомобиля этот телефон.
1. Можно ли в нём узнать CellID и LAC через JavaMidlet?
2.Так же GPS-координаты?
3. На сколько хватает батарейки?
4. Можно ли обрабатывать кнопку гарнитуры из JavaMidlet, по нажатию на которую (в момент звонка) происходит ответ на входящий звонок?

IDOL 1234 29.10.2010 14:21

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
0) JavaMidlet - это java - приложение или какой-то метод?
1) CellD не пробовал, но, скорее всего, нет. (а зачем, если есть GPS??)
2) Думаю, что да. Яндекс-карты с ним работают нормально.
3) Если режиме навигации - то после 4 часов на плеер и игрушки можешь не рассчитывать. Кирпичом лежит почти месяц(не проверял ;) ). При активном использовании экрана (чтение) - дольше, чем на 6 часов меня не хватило. В общем, часов 8-10.
4) подозреваю, что нет. Там взаимодействие Java с функциями прошивки практически отсутствует.
ps Ненавижу гопников. Уроды.

NeiroN 23.02.2011 23:28

Ответ: Предположительно, JSR-179 : javax.microedition.location
 
вот пример использования javax.microedition.location

взятый здесь

после его ковыряния написал либу к MP
но в нем тоже есть "костыли" - не ясна надобность сбрасывать ГПС постоянно.

PHP код:

import java.util.Timer;
import java.util.TimerTask;

import javax.microedition.location.Criteria;
import javax.microedition.location.Location;
import javax.microedition.location.LocationException;
import javax.microedition.location.LocationListener;
import javax.microedition.location.LocationProvider;
import javax.microedition.location.QualifiedCoordinates;

import net.rim.device.api.system.Application;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.Screen;
import net.rim.device.api.ui.Ui;
import net.rim.device.api.ui.UiEngine;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.RichTextField;
import net.rim.device.api.ui.container.MainScreen;
import bbtracker.uitl.BBTHTTPClient;

public class 
BBTMainScreen extends MainScreen {
    public final static 
String LOCATION_URL "YOUR SCRIPT LOCATION";

    private 
RichTextField logField;
    private 
String log;
    private 
long lastGPSRead;

    public 
BBTMainScreen() {
        
log "";
        
setTitle(new LabelField("BBTracker GPS Fix"LabelField.ELLIPSIS LabelField.USE_ALL_WIDTH));

        
ButtonField btn = new ButtonField("follow logs"ButtonField.CONSUME_CLICK);
        
btn.setChangeListener(new ButtonListener());
        
this.add(btn);
        
        
logField = new RichTextField("asdf");
        
this.add(logField);
        
        
lastGPSRead System.currentTimeMillis();
        
        new 
LocationTracker();
    }
    
    public 
boolean onClose() {
        
Application.getApplication().requestBackground();
        
        return 
false;
    }
    
    final class 
ButtonListener implements FieldChangeListener {
        public 
void fieldChanged(Field fieldint context) {
            
UiEngine ui Ui.getUiEngine();
            
Screen screen = new Dialog(Dialog.D_OKBBTMainScreen.this.logDialog.OK,
            
Bitmap.getPredefinedBitmap(Bitmap.EXCLAMATION), Manager.VERTICAL_SCROLL);
            
ui.queueStatus(screen1true);
        }
    }
    
    class 
LocationTracker extends TimerTask {
        private 
double longitudelatitude;
        private 
Timer timer;
        private 
LocationProvider provider;
        
        public 
LocationTracker() {
            
timer = new Timer();
            
            
resetGPS();
            
            
timer.schedule(this060000);
        }
        
        public 
void resetGPS() {
            try {
                if(
provider != null) {
                    
provider.setLocationListener(null000);
                    
provider.reset();
                    
provider null;
                }
                
                
Criteria criteria = new Criteria();
                
                
criteria.setHorizontalAccuracy(1000);
                
criteria.setVerticalAccuracy(1000);
                
criteria.setCostAllowed(false);
              
//                criteria.setAltitudeRequired(false);
//                criteria.setSpeedAndCourseRequired(false);
//                criteria.setAddressInfoRequired(false);
                
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
                
                
provider LocationProvider.getInstance(criteria);
                
provider.setLocationListener(new MyLocationListener(), 10, -1, -1);
                
                
// reset the gps counter so we wait another 5 mins before a reset
                
lastGPSRead System.currentTimeMillis();
            } catch(
Exception e) { log e.toString() + log; }
            
            
log "reset gps\n" log;
        }
        
        public 
void run() {
            if(
log.length() > 3000) {
                
log log.substring(log.length() - 3000);
            }
            
            if(
System.currentTimeMillis() - lastGPSRead 300000) {
                
BBTHTTPClient.getPage(LOCATION_URL "?longitude=-1&latitude=-1");
                
resetGPS();
                
BBTHTTPClient.getPage(LOCATION_URL "?longitude=-2&latitude=-2");
            }
            
            
log longitude "," latitude "\n" log;
            
            
BBTMainScreen.this.logField.setText(longitude "," latitude "\n");
            
            
log BBTHTTPClient.getPage(LOCATION_URL "?longitude=" longitude "&latitude=" latitude).trim() + log;
        }
        
        private class 
MyLocationListener implements LocationListener {
            public 
void locationUpdated(LocationProvider providerLocation location)
            {
                if(
location != null && location.isValid())
                {
                    
log "got valid coords\n" log;
                    
                    
QualifiedCoordinates qc location.getQualifiedCoordinates();

                    try {
                        
// TODO: not thread safe (assignment should be done at one time)
                        
LocationTracker.this.longitude qc.getLongitude();
                        
LocationTracker.this.latitude qc.getLatitude();
                        
                        
lastGPSRead System.currentTimeMillis();
                    } catch(
Exception e) { log e.toString() + log; }
                }
                else
                {
                    
log "location is not valid..\n" log;
                }
            }

            public 
void providerStateChanged(LocationProvider providerint newState) {
                
// TODO: if provider was disabled, then disable reporting
                
log "state changed: " newState "\n" log;
                
                
LocationTracker.this.resetGPS();
                
//                try {
//                    provider.setLocationListener(null, 0, 0, 0);
//                    provider.reset();
//                    provider = null;
//                    provider = LocationProvider.getInstance(new Criteria());
//                    provider.setLocationListener(new MyLocationListener(), 10, -1, -1);
//                } catch(Exception e) { log = e.toString() + log; }
            
}
        }
    }




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

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