0% found this document useful (0 votes)
0 views10 pages

Location

The document is an Android application code for a phone tracker that retrieves the user's location using the Fused Location Provider. It checks for location permissions, prompts the user to enable location services if necessary, and displays the current or last known location. The application handles permission requests and displays appropriate messages based on the user's actions and location retrieval success or failure.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
0 views10 pages

Location

The document is an Android application code for a phone tracker that retrieves the user's location using the Fused Location Provider. It checks for location permissions, prompts the user to enable location services if necessary, and displays the current or last known location. The application handles permission requests and displays appropriate messages based on the user's actions and location retrieval success or failure.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

package com.example.

phone_tracker

import android.Manifest

import android.content.Intent

import android.content.pm.PackageManager

import android.location.Location

import android.os.Bundle

import android.provider.Settings

import android.util.Log

import android.widget.Button

import android.widget.TextView

import android.widget.Toast

import androidx.appcompat.app.AppCompatActivity

import androidx.core.app.ActivityCompat

import com.google.android.gms.location.*

class MainActivity : AppCompatActivity() {

private lateinit var fusedLocationClient: FusedLocationProviderClient

private lateinit var locationText: TextView

private val LOCATION_PERMISSION_REQUEST_CODE = 1001

private val TAG = "PhoneTracker"

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

locationText = findViewById(R.id.locationText)

val getLocationBtn = findViewById<Button>(R.id.getLocationBtn)

fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)

getLocationBtn.setOnClickListener {

checkLocationPermission()

private fun checkLocationPermission() {

if (ActivityCompat.checkSelfPermission(

this,

Manifest.permission.ACCESS_FINE_LOCATION

) != PackageManager.PERMISSION_GRANTED

){

// Request permissions

ActivityCompat.requestPermissions(

this,

arrayOf(

Manifest.permission.ACCESS_FINE_LOCATION,

Manifest.permission.ACCESS_COARSE_LOCATION

),
LOCATION_PERMISSION_REQUEST_CODE

} else {

// Permissions granted

checkLocationSettings()

private fun checkLocationSettings() {

val locationRequest = LocationRequest.create()

.setPriority(Priority.PRIORITY_HIGH_ACCURACY)

val builder = LocationSettingsRequest.Builder()

.addLocationRequest(locationRequest)

.setAlwaysShow(true)

val client = LocationServices.getSettingsClient(this)

val task = client.checkLocationSettings(builder.build())

task.addOnSuccessListener {

getCurrentLocation()

task.addOnFailureListener {

Toast.makeText(this, "Please turn on location services", Toast.LENGTH_LONG).show()


val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)

startActivity(intent)

private fun getCurrentLocation() {

if (ActivityCompat.checkSelfPermission(

this,

Manifest.permission.ACCESS_FINE_LOCATION

) != PackageManager.PERMISSION_GRANTED

){

Toast.makeText(this, "Location permission not granted", Toast.LENGTH_SHORT).show()

return

fusedLocationClient.getCurrentLocation(Priority.PRIORITY_HIGH_ACCURACY, null)

.addOnSuccessListener { location: Location? ->

if (location != null) {

val result = "Latitude: ${location.latitude}\nLongitude: ${location.longitude}"

locationText.text = result

Log.d(TAG, result)

} else {

locationText.text = "Location is null"

Log.e(TAG, "Location is null")

}
}.addOnFailureListener {

locationText.text = "Failed to get location: ${it.message}"

Log.e(TAG, "Error: ${it.message}")

override fun onRequestPermissionsResult(

requestCode: Int,

permissions: Array<out String>,

grantResults: IntArray

){

super.onRequestPermissionsResult(requestCode, permissions, grantResults)

if (requestCode == LOCATION_PERMISSION_REQUEST_CODE &&

grantResults.isNotEmpty() &&

grantResults[0] == PackageManager.PERMISSION_GRANTED

){

checkLocationSettings()

} else {

Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show()

}
package com.example.phone_tracker

import android.Manifest

import android.content.Intent

import android.content.pm.PackageManager

import android.location.Location

import android.os.Bundle

import android.provider.Settings

import android.util.Log

import android.widget.Button

import android.widget.TextView

import android.widget.Toast

import androidx.appcompat.app.AppCompatActivity

import androidx.core.app.ActivityCompat

import com.google.android.gms.location.*

class MainActivity : AppCompatActivity() {

private lateinit var fusedLocationClient: FusedLocationProviderClient

private lateinit var locationText: TextView

private val locationPermissionRequestCode = 1001

private val tag = "PhoneTracker"

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

locationText = findViewById(R.id.locationText)

val getLocationBtn = findViewById<Button>(R.id.getLocationBtn)

fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)

getLocationBtn.setOnClickListener {

checkLocationPermission()

private fun checkLocationPermission() {

if (ActivityCompat.checkSelfPermission(

this,

Manifest.permission.ACCESS_FINE_LOCATION

) != PackageManager.PERMISSION_GRANTED

){

ActivityCompat.requestPermissions(

this,

arrayOf(

Manifest.permission.ACCESS_FINE_LOCATION,

Manifest.permission.ACCESS_COARSE_LOCATION

),

locationPermissionRequestCode
)

} else {

checkLocationSettings()

private fun checkLocationSettings() {

val locationRequest = LocationRequest.create().apply {

priority = LocationRequest.PRIORITY_HIGH_ACCURACY

val builder = LocationSettingsRequest.Builder()

.addLocationRequest(locationRequest)

.setAlwaysShow(true)

val client = LocationServices.getSettingsClient(this)

val task = client.checkLocationSettings(builder.build())

task.addOnSuccessListener {

getLastKnownLocation()

task.addOnFailureListener {

Toast.makeText(this, "Please turn on location services", Toast.LENGTH_LONG).show()

val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)


startActivity(intent)

private fun getLastKnownLocation() {

if (ActivityCompat.checkSelfPermission(

this,

Manifest.permission.ACCESS_FINE_LOCATION

) != PackageManager.PERMISSION_GRANTED

){

Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show()

return

fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? ->

if (location != null) {

val lat = location.latitude

val lon = location.longitude

val locationString = "Lat: $lat\nLon: $lon"

locationText.text = locationString

Log.d(tag, locationString)

} else {

locationText.text = "Location not found"

Log.w(tag, "Location is null")

}
}.addOnFailureListener { e ->

locationText.text = "Error getting location: ${e.message}"

Log.e(tag, "Location error: ${e.message}")

override fun onRequestPermissionsResult(

requestCode: Int, permissions: Array<out String>, grantResults: IntArray

){

super.onRequestPermissionsResult(requestCode, permissions, grantResults)

if (requestCode == locationPermissionRequestCode &&

grantResults.isNotEmpty() &&

grantResults[0] == PackageManager.PERMISSION_GRANTED

){

checkLocationSettings()

} else {

Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show()

You might also like