Utilizando GPS Interno Nokia Nextel

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!

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

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

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:

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 "";
    }
}

Cara, vlw mesmo, vou testar isso :smiley: