Acceder al servicio de ubicación GPS de Google - Android Studio




"Para mejorar la experiencia, activa la ubicación del dispositivo, que usa los servicios de ubicación de Google"

¿Cómo implementar el servicio de ubicación de Google en tu dispositivo Android?

Hola, en este post accederemos a la ubicación de nuestro móvil. Este ejemplo es para dispositivos Android y para ello utilizaremos Android Studio para programar un aplicación básica que nos facilite obtener nuestra ubicación actual sin salir de la aplicación. Cabe recalcar que anteriormente para poder obtener este permiso la app te redirigía a la configuración de tu celular donde tu debías activar tu GPS, todo eso queda atrás desde la ultima implementación que realizó Google en sus servicios para acceder a los permisos a la configuración de la ubicación.

*Capturas de como solicitaba anteriormente el acceso a la ubicación, aún se puede utilizar este método pero en mi punto de vista es más sencillo para el usuario realizar solo un paso y aceptar compartir su ubicación sin salir de la aplicación.








DEBEMOS REALIZAR LOS SIGUIENTES PASOS

1.Agregamos esto en el AndroidManifest.xml

	
      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
 	

2.Agregamos esto en el OnCreate (Activity) o OnCreateView (Fragment) cúal fuera el caso.

	
  if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);
    Toast.makeText(getActivity(), "Sin Permisos de GPS", Toast.LENGTH_SHORT).show();
  }

 	

3. Agregamos este fragmento de código a nuestra clase donde nos solicitará los permisos de ubicación.

	
    //Verificar el encendido del GPS
    protected void createLocationRequest() {
        locationRequest = LocationRequest.create();
        locationRequest.setInterval(10000);
        locationRequest.setFastestInterval(5000);
        locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

        LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(locationRequest);

        SettingsClient client = LocationServices.getSettingsClient(getActivity());
        Task task = client.checkLocationSettings(builder.build());
        task.addOnSuccessListener(getActivity(), new OnSuccessListener() {
            @Override
            public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
                //Aqui agrega lo que tiene que hacer si cuenta con el permiso
            }
        });

        task.addOnFailureListener(getActivity(), new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                if (e instanceof ResolvableApiException) {
                    try {
                        ResolvableApiException resolvable = (ResolvableApiException) e;
                        resolvable.startResolutionForResult(getActivity(),REQUEST_CHECK_SETTINGS);
                    }
                    catch (IntentSender.SendIntentException sendEx) {
                        Toast.makeText(getContext(), "Error de GPS", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });

    }

    //Verificar el encendido del GPS
    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

        switch (requestCode) {
            case REQUEST_CHECK_SETTINGS:
                switch (resultCode) {
                    case Activity.RESULT_OK:
                        //Aqui agrega lo que tiene que hacer si acepta compartir su ubicación (ACEPTAR)
                        break;

                    case Activity.RESULT_CANCELED:
                    	//Aqui agrega lo que tiene que hacer si rechaza compartir su ubicación (NO, GRACIAS)
                        break;
                }

                break;
        }
    }
  	

4. En mi caso lo estoy solicitando desde un fragment, por lo tanto es necesario agregar este fragmento de codigo en el MainActivity que llama al Fragment.

	
  @Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // Enviar los resultados al Fragment frame_home
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.frame_select);
    fragment.onActivityResult(requestCode, resultCode, data);
  }
  	

Comentarios

Entradas más populares de este blog

Evaluar funciones matemáticas en Java con librería JEP

Aprendizaje supervisado - Árbol de decisión para diagnóstico de enfermedades con Python

Cambiar tamaño (redimensionar) imagen en Laravel 8 con librería ImageManagerStatic de Intervention