Last active
June 22, 2022 05:32
-
-
Save anandrex5/9dd853bf9030e7f8965139d4b8c37ce4 to your computer and use it in GitHub Desktop.
Find My Longitude and Latitude
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.example.myexamapplication"> | |
//These are the permissions to Find Latitude and Longitude | |
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> | |
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | |
<uses-permission android:name="android.permission.INTERNET" /> | |
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_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/Theme.MyExamApplication"> | |
<activity | |
android:name=".FindAddress" | |
android:exported="true"> | |
<intent-filter> | |
<action android:name="android.intent.action.MAIN" /> | |
<category android:name="android.intent.category.LAUNCHER" /> | |
</intent-filter> | |
</activity> | |
<activity android:name=".VerifyOtpPage" /> | |
</application> | |
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
plugins { | |
id 'com.android.application' | |
} | |
android { | |
compileSdk 32 | |
defaultConfig { | |
applicationId "com.example.myexamapplication" | |
minSdk 21 | |
targetSdk 32 | |
versionCode 1 | |
versionName "1.0" | |
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | |
} | |
buildTypes { | |
release { | |
minifyEnabled false | |
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | |
} | |
} | |
compileOptions { | |
sourceCompatibility JavaVersion.VERSION_1_8 | |
targetCompatibility JavaVersion.VERSION_1_8 | |
} | |
} | |
dependencies { | |
implementation 'androidx.appcompat:appcompat:1.4.1' | |
implementation 'com.google.android.material:material:1.5.0' | |
implementation 'androidx.constraintlayout:constraintlayout:2.1.3' | |
implementation 'androidx.legacy:legacy-support-v4:1.0.0' | |
testImplementation 'junit:junit:4.13.2' | |
androidTestImplementation 'androidx.test.ext:junit:1.1.3' | |
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' | |
implementation 'com.github.joielechong:countrycodepicker:2.4.2' | |
implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.32' | |
implementation 'com.github.mukeshsolanki:android-otpview-pinview:3.0.0' | |
implementation "androidx.cardview:cardview:1.0.0" | |
implementation "androidx.recyclerview:recyclerview:1.2.1" | |
implementation 'com.google.code.gson:gson:2.8.7' | |
implementation 'com.squareup.retrofit2:retrofit:2.4.0' | |
implementation 'com.google.code.gson:gson:2.6.2' | |
implementation 'com.squareup.retrofit2:converter-gson:2.1.0' | |
implementation 'com.squareup.retrofit2:converter-gson:2.4.0' | |
implementation 'com.squareup.picasso:picasso:2.5.2' | |
implementation("com.squareup.okhttp3:logging-interceptor:4.9.3") | |
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' | |
implementation fileTree(dir: 'libs', include: ['*.jar']) | |
//Dependencies to find Latitute and Longitud | |
implementation 'com.google.android.gms:play-services-location:17.0.0' | |
testImplementation 'junit:junit:4.12' | |
androidTestImplementation 'androidx.test.ext:junit:1.1.1' | |
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' | |
implementation 'de.hdodenhof:circleimageview:3.1.0' | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
xmlns:app="http://schemas.android.com/apk/res-auto" | |
android:background="#6B00BCD4" | |
android:gravity="center" | |
android:orientation="vertical"> | |
<de.hdodenhof.circleimageview.CircleImageView | |
android:id="@+id/circleview1" | |
android:layout_width="92dp" | |
android:layout_height="92dp" | |
android:src="@drawable/unslpash" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toTopOf="parent" /> | |
<TextView | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:fontFamily="sans-serif-black" | |
android:text="Latitude:" /> | |
<TextView | |
android:id="@+id/latTextView" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:text="Latitude will be here! " | |
android:textColor="#000000" /> | |
<TextView | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:fontFamily="sans-serif-black" | |
android:text="Longitude:" /> | |
<TextView | |
android:id="@+id/lonTextView" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:text="Longitude will be here! " | |
android:textColor="#000000" /> | |
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.myexamapplication; | |
import android.Manifest; | |
import android.annotation.SuppressLint; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.content.pm.PackageManager; | |
import android.location.Location; | |
import android.location.LocationManager; | |
import android.os.Bundle; | |
import android.os.Looper; | |
import android.provider.Settings; | |
import android.widget.TextView; | |
import android.widget.Toast; | |
import androidx.annotation.NonNull; | |
import androidx.appcompat.app.AppCompatActivity; | |
import androidx.core.app.ActivityCompat; | |
import com.google.android.gms.location.FusedLocationProviderClient; | |
import com.google.android.gms.location.LocationCallback; | |
import com.google.android.gms.location.LocationRequest; | |
import com.google.android.gms.location.LocationResult; | |
import com.google.android.gms.location.LocationServices; | |
import com.google.android.gms.tasks.OnCompleteListener; | |
import com.google.android.gms.tasks.Task; | |
public class FindAddress extends AppCompatActivity { | |
// initializing | |
// FusedLocationProviderClient | |
// object | |
FusedLocationProviderClient mFusedLocationClient; | |
// Initializing other items | |
// from layout file | |
TextView latitudeTextView, longitTextView; | |
int PERMISSION_ID = 44; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.find_address); | |
latitudeTextView = findViewById(R.id.latTextView); | |
longitTextView = findViewById(R.id.lonTextView); | |
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); | |
// method to get the location | |
getLastLocation(); | |
} | |
@SuppressLint("MissingPermission") | |
private void getLastLocation() { | |
// check if permissions are given | |
if (checkPermissions()) { | |
// check if location is enabled | |
if (isLocationEnabled()) { | |
// getting last | |
// location from | |
// FusedLocationClient | |
// object | |
mFusedLocationClient.getLastLocation().addOnCompleteListener(task -> { | |
Location location = task.getResult(); | |
if (location == null) { | |
requestNewLocationData(); | |
} else { | |
latitudeTextView.setText(location.getLatitude() + ""); | |
longitTextView.setText(location.getLongitude() + ""); | |
} | |
}); | |
} else { | |
Toast.makeText(this, "Please turn on" + " your location...", Toast.LENGTH_LONG).show(); | |
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); | |
startActivity(intent); | |
} | |
} else { | |
// if permissions aren't available, | |
// request for permissions | |
requestPermissions(); | |
} | |
} | |
@SuppressLint("MissingPermission") | |
private void requestNewLocationData() { | |
// Initializing LocationRequest | |
// object with appropriate methods | |
LocationRequest mLocationRequest = new LocationRequest(); | |
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); | |
mLocationRequest.setInterval(5); | |
mLocationRequest.setFastestInterval(0); | |
// mLocationRequest.setNumUpdates(1); | |
// setting LocationRequest | |
// on FusedLocationClient | |
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); | |
mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()); | |
} | |
private LocationCallback mLocationCallback = new LocationCallback() { | |
@Override | |
public void onLocationResult(LocationResult locationResult) { | |
Location mLastLocation = locationResult.getLastLocation(); | |
latitudeTextView.setText("Latitude: " + mLastLocation.getLatitude() + ""); | |
longitTextView.setText("Longitude: " + mLastLocation.getLongitude() + ""); | |
} | |
}; | |
// method to check for permissions | |
private boolean checkPermissions() { | |
return ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED; | |
// If we want background location | |
// on Android 10.0 and higher, | |
// use: | |
// ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) == PackageManager.PERMISSION_GRANTED | |
} | |
// method to request for permissions | |
private void requestPermissions() { | |
ActivityCompat.requestPermissions(this, new String[]{ | |
Manifest.permission.ACCESS_COARSE_LOCATION, | |
Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_ID); | |
} | |
// method to check | |
// if location is enabled | |
private boolean isLocationEnabled() { | |
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); | |
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) || locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); | |
} | |
// If everything is alright then | |
@Override | |
public void | |
onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { | |
super.onRequestPermissionsResult(requestCode, permissions, grantResults); | |
if (requestCode == PERMISSION_ID) { | |
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |
getLastLocation(); | |
} | |
} | |
} | |
@Override | |
public void onResume() { | |
super.onResume(); | |
if (checkPermissions()) { | |
getLastLocation(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment