Utilizando GPS Interno Nokia Nextel

5 respostas
S

Galera possou 2 aparelhos um N95 com GPS interno e um i570 Nextel tambem com GPS Interno, gostaria de saber como proceder para utilizar o GPS Interno destes aparelhos, consigo hoje utilizar um GPS externo via Blutooth, fazendo a conexão e escutando via Stream as posições, proximo passo que gostaria de estudar seria a conexão com o proprio GPS do aparelho.

Obrigado!

5 Respostas

J

Você pode utilizar a api location, a Nokia e a Nextel tem bastante conteúdo sobre isso, dê uma procurada no site deles.

S

Hum, eu andei mexendo nela, mas achei que era uma api para se manipular as geo posições, ou seja achei que era soh para mexer com as informações não para iniciar GPS, e tal. Vou dar uma estudada a respeito! Obrigado

j0nny

Aproveitando o tópico, como vc capturou as posições por bluetooth?
Tbm tenho um receptor bluetooth GPS e vou precisar fazer o mesmo esquema :slight_smile:

S

segue ai os codigos, 3 classes faz o trabalho, a primeira eu coloquei os endereços dos dispositivos fixo, ai é só vc alterar os endereços para o seu dispositivo.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Bluetooth;

import java.io.DataInputStream;
import java.io.IOException;
//import javax.bluetooth.ServiceRecord;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;

/**
 *
 * @author Shakall
 */
public class SPPClient extends Thread {

    //private ServiceRecord serviceRecord;
    private int read;
    private StringBuffer buffer;
    private String url;
    StreamConnection streamConnection;
    DataInputStream dataInputStream;
    boolean automatico = true;
    private static final String GPS1 = "btspp://001C88204B92:1;authenticate=false;encrypt=false;master=false";
    private static final String GPS2 = "btspp://001C882052A9:1;authenticate=false;encrypt=false;master=false";
    private static final String GPS3 = "btspp://001C88205241:1;authenticate=false;encrypt=false;master=false";
    private static final String GPSLOGGER="btspp://001BC105B008:1;authenticate=false;encrypt=false;master=false";;

    public SPPClient() {
        super();
       // this.serviceRecord = serviceRecord;
       // if (serviceRecord == null) {
            url = GPS1;
      //  } else {
      //      url = serviceRecord.getConnectionURL(serviceRecord.NOAUTHENTICATE_NOENCRYPT, false);
      //  }
      //  NMEA0183.setURL(url);
    }

    public void run() {
        try {
            while (automatico) {
                pegarPosicao();
                sleep(300000);
            }
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }

    }

    public int pegarPosicao() {
        try {
            streamConnection = (StreamConnection) Connector.open(url);
            dataInputStream = streamConnection.openDataInputStream();
            NMEA0183.limpa();
            while (NMEA0183.size() < 4) {
                buffer = new StringBuffer();
                while ((read = dataInputStream.read()) != 13) {
                    buffer.append((char) read);
                }
                buffer.append((char) 13).append((char) dataInputStream.read());
                NMEA0183.setNMEA0183(buffer.toString());
            }
            dataInputStream.close();
            streamConnection.close();
            return 1;
        } catch (IOException ex) {
            ex.printStackTrace();
            return 0;
        }
    }
}
package Bluetooth;
import java.util.NoSuchElementException;
public class StringTokenizer {
    private char delimiter;
    private int currentPosition;
    private int nextPosition;
    private int maxPosition;
    private String string;

    public StringTokenizer(String string, char delimiter) {
        this.string = string;
        this.currentPosition = 0;
        this.delimiter = delimiter;
        this.maxPosition = string.length();
        this.nextPosition = string.indexOf(delimiter, currentPosition);
        if(nextPosition == -1 && currentPosition < maxPosition){
            nextPosition = maxPosition;
        }
    }

    public boolean hasNext() {
        return nextPosition != -1 && currentPosition <= nextPosition;
    }

    public String next() throws NoSuchElementException {
        if (!hasNext())
            throw new NoSuchElementException();
        String next = string.substring(currentPosition, nextPosition);
        currentPosition = nextPosition + 1;
        nextPosition = string.indexOf(delimiter, currentPosition);
        if(nextPosition == -1 && currentPosition < maxPosition){
            nextPosition = maxPosition;
        }
        return next;
    }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Bluetooth;

import java.util.Calendar;
import java.util.Date;
import net.dclausen.microfloat.MicroFloat;

/**
 *
 * @author Shakall
 */
public final class NMEA0183 {

    public static final int GPGGA = 0x01;
    public static final int GPGSA = 0x02;
    public static final int GPGSV = 0x04;
    public static final int GPRMC = 0x00;
    private static String lastGPGGA = "";
    private static String lastGPGSA = "";
    private static String lastGPGSV = "";
    //private static String lastGPRMC = "";
    private static String lastGPRMC = "";// = "$GPRMC,224648.000,A,2655.7695,S,856.8809,W,0.37,18.51,300309,,,A*51";
    private static String URL;

    public static String getData() {
        String data = null;
        String hora;
        if (lastGPRMC.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPRMC, ',');
            try {
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                data = stringTokenizer.next();
                hora = getHorario();
                Calendar cal = Calendar.getInstance();
                cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(data.substring(0, 2)));
                cal.set(Calendar.MONTH, Integer.parseInt(data.substring(2, 4)) - 1);
                cal.set(Calendar.YEAR, (2000 + Integer.parseInt(data.substring(4, 6))));
                cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hora.substring(0, 2)));
                cal.set(Calendar.MINUTE, Integer.parseInt(hora.substring(3, 5)));
                cal.set(Calendar.SECOND, Integer.parseInt(hora.substring(6, 8)));
                data = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DAY_OF_MONTH) + " " + cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        } else {
            //return data;excluir
            Calendar cal = Calendar.getInstance();
            cal.setTime(new Date());
            data = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DAY_OF_MONTH) + " " + cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND);
        }
        return data;
    }

    static void limpa() {
        lastGPGGA = "";
        lastGPGSA = "";
        lastGPGSV = "";
        lastGPRMC = "";
    }

    public static synchronized void setURL(String URL) {
        NMEA0183.URL = URL;
    }

    public static synchronized String getURL() {
        return URL;
    }

    public static synchronized int size() {
        int cont = 0;
        if (!lastGPGGA.equals("")) {
            cont++;
        }
        if (!lastGPGSA.equals("")) {
            cont++;
        }
        if (!lastGPGSV.equals("")) {
            cont++;
        }
        if (!lastGPRMC.equals("")) {
            cont++;
        }

        return cont;
    }

    private static String corrigeHora(int hora) {
        if (hora >= 3) {
            hora = hora - 3;
            if (hora < 10) {
                return "0" + hora;
            } else {
                return hora + "";
            }
        } else {
            hora = (hora - 3) + 24;
            if (hora < 10) {
                return "0" + hora;
            } else {
                return hora + "";

            }
        }
    }

    private NMEA0183() {
    }

    public static synchronized String getNMEA0183(int type) {
        switch (type) {
            case GPRMC:
                return lastGPRMC;
            case GPGGA:
                return lastGPGGA;
            case GPGSA:
                return lastGPGSA;
            case GPGSV:
                return lastGPGSV;
            default:
                return "";
        }
    }

    public static synchronized void setNMEA0183(String nmea0183) { 
        if (nmea0183.startsWith("$GPRMC")) {
            lastGPRMC = nmea0183;
        } else if (nmea0183.startsWith("$GPGGA")) {
            lastGPGGA = nmea0183;
        } else if (nmea0183.startsWith("$GPGSA")) {
            lastGPGSA = nmea0183;
        } else if (nmea0183.startsWith("$GPGSV")) {
            lastGPGSV = nmea0183;
        }
    }

    public static synchronized String getHorario() {
        if (lastGPRMC.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPRMC, ',');
            try {
                stringTokenizer.next();
                String tempo = stringTokenizer.next();
                if (tempo.length() >= 7) {
                    return corrigeHora(Integer.parseInt(tempo.substring(0, 2))) + ":" + tempo.substring(2, 4) + ":" + tempo.substring(4, 6);
                } else {
                    return "";
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return null;
    }

    public static synchronized String getLat() {
        if (lastGPRMC.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPRMC, ',');
            try {
                stringTokenizer.next();
                stringTokenizer.next();
                if (stringTokenizer.next().equals("A")) {
                    return stringTokenizer.next() + " " + stringTokenizer.next();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return "";
    }

    public static synchronized String getLatDirection() {
        if (lastGPRMC.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPRMC, ',');
            try {
                stringTokenizer.next();
                stringTokenizer.next();
                if (stringTokenizer.next().equals("A")) {
                    stringTokenizer.next();
                    return stringTokenizer.next();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return null;
    }

    public static synchronized String getLog() {
        if (lastGPRMC.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPRMC, ',');
            try {
                stringTokenizer.next();
                stringTokenizer.next();
                if (stringTokenizer.next().equals("A")) {
                    stringTokenizer.next();
                    stringTokenizer.next();
                    return stringTokenizer.next() + " " + stringTokenizer.next();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return "";
    }

    public static synchronized String getLogDirection() {
        if (lastGPRMC.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPRMC, ',');
            try {
                stringTokenizer.next();
                stringTokenizer.next();
                if (stringTokenizer.next().equals("A")) {
                    stringTokenizer.next();
                    stringTokenizer.next();
                    stringTokenizer.next();
                    return stringTokenizer.next();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return null;
    }

    public static synchronized String getVel() {
        if (lastGPRMC.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPRMC, ',');
            try {
                stringTokenizer.next();
                stringTokenizer.next();
                if (stringTokenizer.next().equals("A")) {
                    stringTokenizer.next();
                    stringTokenizer.next();
                    stringTokenizer.next();
                    stringTokenizer.next();
                    String knots = stringTokenizer.next();
                    String kph = MicroFloat.toString(MicroFloat.mul(MicroFloat.parseFloat(knots), MicroFloat.parseFloat("1.852"))) + "";
                    if (kph.length() > 3) {
                        kph = kph.substring(0, kph.indexOf('.') + 3);
                    }
                    return kph;
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return "";
    }

    public static synchronized String getDirection() {
        if (lastGPRMC.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPRMC, ',');
            try {
                stringTokenizer.next();
                stringTokenizer.next();
                if (stringTokenizer.next().equals("A")) {
                    stringTokenizer.next();
                    stringTokenizer.next();
                    stringTokenizer.next();
                    stringTokenizer.next();
                    stringTokenizer.next();
                    return stringTokenizer.next();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return "";
    }

    public static synchronized String getAlt() {
        if (lastGPGGA.length() > 1) {
            StringTokenizer stringTokenizer = new StringTokenizer(lastGPGGA, ',');
            try {
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                stringTokenizer.next();
                return stringTokenizer.next();

            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return "";
    }
}
j0nny

Cara, vlw mesmo, vou testar isso :smiley:

Criado 24 de setembro de 2009
Ultima resposta 23 de fev. de 2010
Respostas 5
Participantes 3