Comment obtenir l'emplacement actuel en utilisant l'adresse IP?Android: Comment situer l'application?
Répondre
Sujet Obtaining user location au couvre l'obtention de l'emplacement en utilisant les fonctions intégrées dans Android.
Il indique également ceci:
Le fournisseur d'emplacement réseau fournit de bonnes données de localisation sans utiliser GPS.
Et:
Restrict un ensemble de fournisseurs
En fonction de l'environnement dans lequel votre application est utilisée ou le niveau de précision souhaité, vous pouvez choisir d'utiliser uniquement le fournisseur d'emplacement réseau ou seulement le GPS, au lieu des deux. Interagir avec un seul des services réduit l'utilisation de la batterie à un coût potentiel de précision.
Pourquoi voulez-vous utiliser l'adresse IP pour trouver l'emplacement? Adresse IP peut donner des informations de localisation avec les détails du pays seulement et aussi vous dépendez d'un service Web qui fait l'emplacement géographique avec IP qui est moins fiable et ne fonctionnera que si vous avez un accès Internet. Aussi, si vous vous connectez à un serveur dans votre application, vous pouvez simplement laisser le serveur faire cela, ce qui sera beaucoup plus rapide.
Vous avez le GPS sur l'appareil qui vous donnera l'emplacement de l'utilisateur en temps réel en termes de latitude et de longitude. Vous pouvez suivre le lien dans la réponse de Joakim
Si vous voulez obtenir l'emplacement mobile, vous devez d'abord un fournisseur dans mon cas, j'utilise google API pour obtenir l'emplacement GPS de votre téléphone mobile, vous devez obtenir le jeton de l'API dans le tutoriel suivant explique vraiment bien comment obtenir l'emplacement de votre téléphone mobile.
http://blog.teamtreehouse.com/beginners-guide-location-android
Et du web développeur android si vous avez des doutes bien.
http://developer.android.com/training/location/retrieve-current.html
http://developer.android.com/training/location/receive-location-updates.html
Et c'est le plus important pour moi dans le développer je suis arrivé à obtenir l'emplacement d'un fragment et j'utilise le fragment pour obtenir l'emplacement de l'activité partout dont le besoin de l'emplacement dans mon application Android ..
Utilisation des rappels pour demander l'emplacement du téléphone mobile.
Important vous besoin d'une autorisation de l'emplacement et d'autres pour travailler ...
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- The following two permissions are not required to use
Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
XML de l'activité doit avoir le fragment:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="es.urjc.mov.javsan.fichas.LocationFragment"
android:id="@+id/location_fragment"
android:layout_height="0dip"
android:layout_weight="0"
android:layout_width="match_parent" />
</LinearLayout>
Fragment de code:
package es.urjc.mov.javsan.fichas;
import android.Manifest;
import android.app.Fragment;
import android.content.IntentSender;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
public class LocationFragment extends Fragment implements
com.google.android.gms.location.LocationListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
private static final String TAG = LocationFragment.class.getSimpleName();
private GoogleApiClient mGoogleApiClient;
private LocationRequest mLocationRequest;
private android.location.Location currentLocation;
private View fragmentLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
fragmentLayout = inflater.inflate(R.layout.location_fragment, container, false);
buildLocation();
return fragmentLayout;
}
@Override
public void onStart() {
if (!mGoogleApiClient.isConnected()) {
mGoogleApiClient.connect();
}
super.onStart();
}
@Override
public void onResume() {
if (!mGoogleApiClient.isConnected()) {
mGoogleApiClient.connect();
}
super.onResume();
}
@Override
public void onStop() {
if (mGoogleApiClient.isConnected()) {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
mGoogleApiClient.disconnect();
}
super.onStop();
}
@Override
public void onConnected(Bundle bundle) {
if (isDenyLocation()) {
requestAllowLocation();
return;
}
android.location.Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (location != null) {
handleNewLocation(location);
} else {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
}
@Override
public void onConnectionSuspended(int i) {
Log.e(TAG, String.format("%s\n", "Connection suspended please reconnect..."));
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.v(TAG, String.format("Connection failed : %s", connectionResult.toString()));
if (!connectionResult.hasResolution()) {
Log.i(TAG, "Location services connection failed with code " + connectionResult.getErrorCode());
return;
}
try {
// Start an Activity that tries to resolve the error
connectionResult.startResolutionForResult(getActivity(), CONNECTION_FAILURE_RESOLUTION_REQUEST);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
@Override
public void onLocationChanged(Location location) {
handleNewLocation(location);
}
private void buildLocation() {
if (mGoogleApiClient == null) {
// Create the GoogleApiClient Object.
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.addApi(AppIndex.API).build();
}
if (mLocationRequest == null) {
// Create the LocationRequest Object.
mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10 * 1000) // 10 seconds, in milliseconds
.setFastestInterval(1 * 1000); // 1 second, in milliseconds
}
}
private void handleNewLocation(Location location) {
currentLocation = location;
Log.e(TAG, String.format("Current Location : %f, %f",
currentLocation.getLongitude(), currentLocation.getLatitude()));
}
I J'espère que cette aide!
Javi,
Vous devez marquer cette question avec Android, de cette façon, les gens qui cherchent seulement pour répondre à des questions Android trouveront plus facilement. –