0
How do I get latitude and longitude in Java
to the Android
without using the internet, only with GPS.
I think there is some way yes, because the application "Maps" of Android
does not use the internet.
If anyone knows please help me.
0
How do I get latitude and longitude in Java
to the Android
without using the internet, only with GPS.
I think there is some way yes, because the application "Maps" of Android
does not use the internet.
If anyone knows please help me.
6
Look at this:
public class GPSTracker extends Service implements LocationListener {
private final Context mContext;
// flag para o status do GPS
boolean isGPSEnabled = false;
// flag para o status da rede
boolean isNetworkEnabled = false;
// flag para o status do GPS
boolean canGetLocation = false;
Location location; // localização
double latitude; // latitude
double longitude; // longitude
// A distância mínima, em metros, para mudar as atualizações
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
// O tempo mínimo, em milissegundos, entre as atualizações
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
// Declarando um Location Manager
protected LocationManager locationManager;
public GPSTracker(Context context) {
this.mContext = context;
getLocation();
}
public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
// pegando o status do GPS
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// pegando o status da rede
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// nenhum provedor de rede está habilitado
} else {
this.canGetLocation = true;
// Primeira obtenção da localização pelo provedor de rede
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("Network", "Network");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
// se GPS habilitado pega lat/long usando os serviços do GPS
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
/**
* Para de usar o listener do GPS
* Chamando esse método o GPS vai parar em seu aplicativo
* */
public void stopUsingGPS(){
if(locationManager != null){
locationManager.removeUpdates(GPSTracker.this);
}
}
/**
* Método para obter a latitude
* */
public double getLatitude(){
if(location != null){
latitude = location.getLatitude();
}
// return latitude
return latitude;
}
/**
* Método para pegar a longitude
* */
public double getLongitude(){
if(location != null){
longitude = location.getLongitude();
}
// return longitude
return longitude;
}
/**
* Método para checar se o GPS/Wi-Fi está habilitado
* @return boolean
* */
public boolean canGetLocation() {
return this.canGetLocation;
}
/**
* Método para mostrar as configurações me um AlertDialog
* Pressionando Configurações o botão vai mostrar Opções de Configuração
* */
public void showSettingsAlert(){
AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
// Definindo Dialog Title
alertDialog.setTitle("GPS is settings");
// Definindo Dialog Message
alertDialog.setMessage("GPS não está habilitado. Você deseja ir em configurações?");
// Ao pressionar o botão Configurações
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
mContext.startActivity(intent);
}
});
// Ao pressionar o botão cancelar
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
// Mostrando Alert Message
alertDialog.show();
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
Use that way:
gps = new GPSTracker(PromotionActivity.this);
// checa se o GPS está habilitado
if(gps.canGetLocation()){
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
}else{
// não pôde pegar a localização
// GPS ou a Rede não está habilitada
// Pergunta ao usuário para habilitar GPS/Rede em configurações
gps.showSettingsAlert();
}
Browser other questions tagged java android eclipse
You are not signed in. Login or sign up in order to post.
Explanation about the code. Android provides both a
NETWORK_PROVIDER
(network) as aGPS_PROVIDER
(gps) to the Locationmanager. The code in question checks and tries to take measures first from the network (if enabled) and then from the GPS (again if enabled).– Anthony Accioly
+1 for the comment, but I decided not to because it was commented in the code. Thank you Anthony!
– Reiksiel