Android :Comment obtenir de l'Emplacement Actuel de la Longitude et de la latitude?
Je veux stocker Emplacement actuel de la base de données lorsque je clique sur Button
.
L'emplacement est enregistré, mais il reçoit 0.0 ,0.0 ne sais pas où est l'erreur dans mon code Ici, je poste mon code complet de cette s'il vous plaît m'aider à sortir de ce.
obtenir de l'emplacement actuel
GetCurrentGPSLocation gps = new GetCurrentGPSLocation(getActivity());
//check if GPS enabled
if (gps.canGetLocation()) {
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
//\n is for new line
lat.setText( ""+latitude);
longi.setText("" +longitude);
latitude12=lat.getText().toString();
longitude12=longi.getText().toString();
Toast.makeText(getActivity(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
longi.setVisibility(View.INVISIBLE);
lat.setVisibility(View.INVISIBLE);
} else {
//can't get location
//GPS or Network is not enabled
//Ask user to enable GPS/network in settings
gps.showSettingsAlert();
}
GetCurrentGPSLocation
package com.example.sachin.omcom;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class GetCurrentGPSLocation extends AppCompatActivity implements LocationListener {
private final Context mContext;
//flag for GPS status
boolean isGPSEnabled = false;
//flag for network status
boolean isNetworkEnabled = false;
//flag for GPS status
boolean canGetLocation = false;
Location location; //location
double latitude; //latitude
double longitude; //longitude
//The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; //10 meters
//The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; //1 minute
//Declaring a Location Manager
protected LocationManager locationManager;
public GetCurrentGPSLocation(Context context) {
this.mContext = context;
getLocation();
}
public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
//getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
//getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
//no network provider is enabled
} else {
this.canGetLocation = true;
//First get location from Network Provider
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();
}
}
}
//if GPS Enabled get lat/long using GPS Services
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;
}
/**
* Stop using GPS listener
* Calling this function will stop using GPS in your app
* */
public void stopUsingGPS(){
if(locationManager != null){
locationManager.removeUpdates(GetCurrentGPSLocation.this);
}
}
/**
* Function to get latitude
* */
public double getLatitude(){
if(location != null){
latitude = location.getLatitude();
}
//return latitude
return latitude;
}
/**
* Function to get longitude
* */
public double getLongitude(){
if(location != null){
longitude = location.getLongitude();
}
//return longitude
return longitude;
}
/**
* Function to check GPS/wifi enabled
* @return boolean
* */
public boolean canGetLocation() {
return this.canGetLocation;
}
/**
* Function to show settings alert dialog
* On pressing Settings button will lauch Settings Options
* */
public void showSettingsAlert(){
AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
//Setting Dialog Title
alertDialog.setTitle("GPS is settings");
//Setting Dialog Message
alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
//On pressing Settings button
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);
}
});
//on pressing cancel button
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
//Showing 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;
}}
- Avez-vous ajouté l'autorisation pour le service de localisation dans le fichier manifest ???
- oui j'ai ajouté de l'autorisation
- Bon alors permettez-moi de passer par votre code, et de revenir à vous, assurez-vous également que si vous exécutez votre application sur de la guimauve alors vous devez demander à l'exécution de l'autorisation
- Étendre
Service
au lieu deAppCompatActivity
- Double Possible de Comment puis-je obtenir la position GPS actuelle par programmation dans Android?
- Juste prolonger votre classe avec le Service et de mettre en œuvre: LocationListener pour obtenir de l'emplacement mis à jour et vous êtes bon pour aller
- quel est le problème avec
extending AppCompatActivity
? pourquoi vous proposer un service de ..extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener
fonctionne bien - quand je suis en utilisant le Service, il me donne l'erreur comme Erreur:(213, 5) erreur: la méthode ne permet pas de remplacer ou de mettre en œuvre une méthode à partir d'un supertype
- Vous êtes à l'aide de quelques sévèrement GPS code. Découvrez la raison cassé et quelques de code dans le gabesechansoftware.com/location-tracking En particulier canGetLocation est mal mis en œuvre. Elle ne vous dit pas si un emplacement est disponible, si le GPS n'est pas désactivée par l'utilisateur.
- Solanki essayer mon exemple
- m d'essayer..
- Double Possible de Quel est le plus simple et le plus robuste pour obtenir de l'utilisateur de l'emplacement actuel sur Android?
Vous devez vous connecter pour publier un commentaire.
onLocationChanged
est appelée à chaque fois que votre emplacement mises à jour , afin de garder & mise à jour d'une valeur globale et de prendre de la valeur sur votreButton
cliquez pour faire ce que vous voulezou basé sur le temps ou la distance que vous pouvez obtenir l'emplacement de l'utiliser
android.location.LocationListener()
voir Modifier pour que,Si vous souhaitez manuellement appel
onLocationChanged
après une période de temps, même l'emplacement n'est pas changé utilisation ci-dessousModifier : C'est l'emplacement de l'écouteur vous pouvez l'utiliser séparément sans ci-dessus si vous voulez
isInternetConnected méthode
isGpsEnabled méthode
Note : Maintenant, ne pas se tromper. Il y a 3 façons mentionnées ici.
1.utilisation
onLocationChanged
automatiquementutilisation
onLocationChanged
manuellementutilisation
android.location.LocationListener()
ajouté la pleine mise en œuvre (ce qui ne sera pas vous aider à apprendre, mais pour obtenir un ensemble de données. Aller à travers ces lignes et de les comprendre par la recherche de ce qui se passe, en fait )onLocationChanged
est appelée , puis mettre un journal ou un sout et voir cela fonctionne.. ok.. Alors vous savez que la méthode est appelée lors de la modification d'emplacement.onLocationChanged
méthode. bon.. maintenant, imaginez que vous voulez l'appeler queonLocationChanged
manuellement permet de dire après chaque 3 secondes..maintenant utiliser cette méthode ci-dessous..Private LocationRequest mLocationRequest,
--< c'est une var,mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(30000); //5 seconds mLocationRequest.setFastestInterval(30000); //3 seconds mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); ......
dans une méthode et l'appeler à partir d'onCreate
1.Ajouter la dépendance dans la construction.gradle
2.Ajouter ces 3 autorisations dans le fichier de manifeste
3.La façon dont vous devriez écrire votre classe
MainActivity
:4.La façon dont vous devriez écrire votre
activity_main.xml