convertir coordenadas en un link luego mostrarlo en un webview

Hola amigos hoy veremos como convertir coordenadas del gps en un link, luego tomaremos este link y lo insertaremos en un webview, la idea es que se muestre nuestra posición en el webview por medio de google  map y podamos visualizar todos los datos de forma gráfica, como siempre les traigo este tutorial de una forma sencilla, les prometo que es muy fácil, solo quiero que pongan atención a los pasos que veremos hoy y verán que es fácil, como de costumbre al final podrán descargar la aplicación si así lo desean pero les recomiendo que lean todo el tutorial y en unos 10 minutos dominaran el tema.

 

convertir coordenadas en un link luego mostrarlo en un webview

 

Empezaremos con los permisos, yo aconsejo que se utilice los siguientes para este ejercicio el cual estarán dentro de nuestro AndroidManifest

AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androfast.server.webview">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Gps"></activity>
    </application>

</manifest>

 

para este ejemplo agregamos un splasScreen si no sabes que es te recomiendo que revizes el siguiente enlace: como hacer un splash Screen  por tal motivo en la carpeta Drawable demos pega la siguiente imagen que te dejo a continuación.

Entonces seguimos, nosotros al crear nuestra app se nos crea por defecto nuestro MainActivity, así que aprovecharemos esa clase para dar los permisos de ejecución del gps y la detección de las coordenadas.

MainActivity

public class MainActivity extends Activity {
    // Duración en milisegundos que se mostrará el splash
    private final int DURACION_SPLASH = 3000; // 3 segundos

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setPermissionForM();


    }


    private void displaySplashScreen() {
        new Handler().postDelayed(new Runnable() {

        /*
         * Showing splash screen with a timer. This will be useful when you
         * want to show case your app logo / company
         */

            @Override
            public void run() {
                Intent i = new Intent(MainActivity.this,  Gps.class);
                startActivity(i);
                finish();
            }
        }, DURACION_SPLASH);
    }

    private void setPermissionForM() {
        int PERMISSION_ALL = 1;
        String[] PERMISSIONS = {
                Manifest.permission.ACCESS_FINE_LOCATION
        };

        if(!hasPermissions(this, PERMISSIONS)){
            ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
        }
    }
    public static boolean hasPermissions(Context context, String... permissions) {
        if (context != null && permissions != null) {
            for (String permission : permissions) {
                if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                    return false;
                }
            }
        }
        return true;
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        Map<String, Integer> perms = new HashMap<String, Integer>();
        // Initial
        perms.put(Manifest.permission.ACCESS_COARSE_LOCATION, PackageManager.PERMISSION_GRANTED);
        perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
        for (int i = 0; i < permissions.length; i++)
            perms.put(permissions[i], grantResults[i]);
        if (perms.get(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
                && perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            // All Permissions Granted
            displaySplashScreen();
        } else {
            // Permission Denied
            Toast.makeText(MainActivity .this, "Some Permission is Denied", Toast.LENGTH_SHORT)
                    .show();
        }

    }
}

 

 

Ahora crearemos una clase mas llamada Gps, en esta clase vamos a trabajar nuestra webview y vamos a tomar las coordenadas obtenidas en nuestro MainActivity y transformarla en un enlace.

Gps

public class Gps extends Activity {
    private WebView _webView;
    private String latitude;
    private String longitude ;
    private LocationManager locManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gps);
        localizacion();
    }

    private void localizacion() {
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        }
        locManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location loc = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        Log.d("Localizacion", "localizacion: " +  loc.getLatitude());
        latitude = String.valueOf(loc.getLatitude());
        longitude = String.valueOf(loc.getLongitude());

        System.out.println(String.valueOf(loc.getLatitude()));
        Log.d("lob", longitude);
        Log.e("lat", latitude);
        _webView = (WebView) findViewById(R.id.webview);
        _webView.getSettings().setJavaScriptEnabled(true);
        _webView.getSettings().setGeolocationEnabled(true);

        _webView.loadUrl("https://www.google.com/maps?q="+latitude+","+longitude);
    }
}

Ahora debemos situarnos en nuestra carpeta layout y dentro buscamos a nuestro activity_main y escribiremos lo siguiente en modo texto:

activity_main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    >

    <ImageView
        android:id="@+id/logo_id"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_centerInParent="true"
        android:src="@drawable/logo"/>

</RelativeLayout>

 

Siguiendo dentro de nuestra carpeta layout crearemos un nuevo archivo xml llamado activity_gps aquí sera donde pondremos nuestro control webview te dejo el codigo en modo texto.

activity_gps

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.androfast.server.webview.Gps">

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</android.support.constraint.ConstraintLayout>

Por ultimo crearemos un archivo xml  llamado splash este archivo cargara nuestra imagen antes para dar paso al permiso de ejecución y luego de aceptar nos mostrara el webview.

splash

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    >

    <ImageView
        android:id="@+id/logo_id"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_centerInParent="true"
        android:src="@drawable/logo"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/logo_id"
        android:layout_centerHorizontal="true"
        android:text="Splash Screen"
        android:textSize="30dp"/>

</RelativeLayout>

Eso fue todo ahora te dejare el enlace de descarga, recuerda si tienes dudas puedes dejarme un mensaje.

 

0

Hola soy Alex Céspedes  fundador de ANDROFAST, programo algunas cosas por diversión, me gusta aprender cosas nuevas y estoy pendiente de todo lo que tenga que ver con tecnología. Este blog lo cree para todas las personas que tengan dificultades en la programación, para ser sincero nunca fui bueno y reprobé algunos cursos de programación, pero mis ganas de aprender pudieron más. SI YO PUEDO TU PUEDES ANIMO!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

WhatsApp chat