android - ubicacion - ¿Cómo detectar Proveedor de ubicación? Proveedor de GPS o red
rastrear celular android (2)
Apenas unos meses antes de que Google lanzara la nueva y simple API para escuchar la ubicación.
Es simple con unas pocas líneas de código.
Dejame explicar
Paso 1: descargue la biblioteca del servicio Google Play con el administrador del SDK. Debido a que el servicio de ubicación se conecta a Google play.
Paso 2: importe la biblioteca en su espacio de trabajo
Paso 3: agrega la biblioteca a tu proyecto
paso 4: escribe el siguiente código.
public class MainActivity extends Activity {
LocationClient mlocationclient;
Location location;
LocationRequest mlocationrequest;
int trasition_type=Geofence.GEOFENCE_TRANSITION_ENTER;
LocationListener mlistener;
PendingIntent lviolation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int isGooglePlayServiceAvilable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
if (isGooglePlayServiceAvilable == ConnectionResult.SUCCESS) {
//Create the location client
mlocationclient=new LocationClient(getApplicationContext(), new CallBack(), new ConnectError());
mlocationclient.connect();
//create the location request objetcs..
mlocationrequest=LocationRequest.create().setInterval(1000).setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
//Crearte the location listener when we want to get location.
mlistener=new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Log.i("Mine Location", ""+location);
}
};
public class ConnectError implements GooglePlayServicesClient.OnConnectionFailedListener
{
@Override
public void onConnectionFailed(ConnectionResult result) {
// TODO Auto-generated method stub
}
}
public class CallBack implements GooglePlayServicesClient.ConnectionCallbacks
{
@Override
public void onConnected(Bundle connectionHint) {
// TODO Auto-generated method stub
location=mlocationclient.getLastLocation();
mlocationclient.requestLocationUpdates(mlocationrequest, mlistener);
//new GetAddress(getApplicationContext()).execute(location);
}
}
Paso 5: Pon este código en el archivo de manifiesto de Android
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>`
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
Estoy usando Fused Location Provider para las actualizaciones de ubicación en mi aplicación. De acuerdo con la documentación proporcionada por ubicación fusionada, utiliza todos los recursos disponibles (por ejemplo, Wifi, GPS, torre de telefonía celular, etc.) para optimizar la ubicación.
Pero quiero saber si hay alguna forma de detectar que la actualización de ubicación actual proviene del proveedor de GPS o del proveedor de red, en el receptor de actualización de ubicación.
Puede verificar el proveedor de location.getProvider()
por location.getProvider()
desde la ubicación que está recibiendo.
Ya sea que esté utilizando una API de ubicación fusionada o una anterior, obtendrá la ubicación desde locationManager.getLastKnownLocation
o LocationServices.FusedLocationApi.getLastLocation
y desde la ubicación puede obtener el proveedor por location.getProvider