Blog purpose for android basic example for android app developer. any query please my contact

Monday, 7 December 2020

How to get the current location latitude and longitude in android

How to get the current location latitude and longitude in android

 In this Article Today learn How to get the current location latitude and longitude in android follow the full Source code How to get the current location latitude and longitude in android:


1.MainActivity.java:


import android.Manifest;

import android.app.AlertDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.location.Location;

import android.location.LocationManager;

import android.provider.Settings;

import android.support.v4.app.ActivityCompat;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

   private static final int REQUEST_LOCATION = 1;

   Button btnGetLocation;

   TextView showLocation;

   LocationManager locationManager;

   String latitude, longitude;

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      ActivityCompat.requestPermissions( this,

      new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);

      showLocation = findViewById(R.id.showLocation);

      btnGetLocation = findViewById(R.id.btnGetLocation);

      btnGetLocation.setOnClickListener(new View.OnClickListener() {

         @Override

         public void onClick(View v) {

            location nManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

            if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

               OnGPS();

            } else {

               getLocation();

            }

         }

      });

   }

   private void OnGPS() {

      final AlertDialog.Builder builder = new AlertDialog.Builder(this);

      builder.setMessage("Enable GPS").setCancelable(false).setPositiveButton("Yes", new  DialogInterface.OnClickListener() {

         @Override

         public void onClick(DialogInterface dialog, int which) {

            startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

         }

      }).setNegativeButton("No", new DialogInterface.OnClickListener() {

         @Override

         public void onClick(DialogInterface dialog, int which) {

            dialog.cancel();

         }

      });

      final AlertDialog alertDialog = builder.create();

      alertDialog.show();

   }

   private void getLocation() {

      if (ActivityCompat.checkSelfPermission(

         MainActivity.this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(

            MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

               ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);

       } else {

         Location locationGPS = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

         if (locationGPS != null) {

            double lat = locationGPS.getLatitude();

            double longi = locationGPS.getLongitude();

            latitude = String.valueOf(lat);

            longitude = String.valueOf(longi);

            showLocation.setText("Your Location: " + "\n" + "Latitude: " + latitude + "\n" + "Longitude: " + longitude);

         } else {

            Toast.makeText(this, "Unable to find location.", Toast.LENGTH_SHORT).show();

        }

      }

   }

}



2.activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   android:layout_width="match_parent"

   android:layout_height="match_parent"

   android:orientation="vertical"

   android:gravity="center"

   tools:context=".MainActivity">

   <TextView

      android:id="@+id/showLocation"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:hint="Location"

      android:textSize="24sp" />

   <Button

      android:id="@+id/btnGetLocation"

      android:layout_width="match_parent"

      android:layout_height="wrap_content"

      android:text="Get Location" />

</LinearLayout>



3. AndroidManifest.xml:


<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

   package="com.app.location">

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

   <uses-permission android:name="android.permission.ACCESS_COARSE_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>

</application>

</manifest>



4.string.xml:


<?xml version="1.0" encoding="utf-8"?>

<resources>


    <string name="app_name">Sqlite Spinner</string>

    <string name="hello_world">Hello world!</string>

    <string name="menu_settings">Settings</string>


</resources>




5.styles.xml:

<resources>


    <!--

        Base application theme, dependent on API level. This theme is replaced

        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

    -->

    <style name="AppBaseTheme" parent="android:Theme.Light">

        <!--

            Theme customizations available in newer API levels can go in

            res/values-vXX/styles.xml, while customizations related to

            backward-compatibility can go here.

        -->

    </style>


    <!-- Application theme. -->

    <style name="AppTheme" parent="AppBaseTheme">

        <!-- All customizations that are NOT specific to a particular API-level can go here. -->

    </style>


</resources>


No comments:

Post a Comment