diff --git a/MainActivity.kt b/MainActivity.kt new file mode 100644 index 0000000..bb19c11 --- /dev/null +++ b/MainActivity.kt @@ -0,0 +1,66 @@ +package com.example.locationapp + +import android.Manifest +import android.content.pm.PackageManager +import android.location.Location +import android.location.LocationListener +import android.location.LocationManager +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.widget.TextView +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat + +class MainActivity : AppCompatActivity() { + + private lateinit var locationManager: LocationManager + private lateinit var locationText: TextView + private val LOCATION_PERMISSION_REQUEST_CODE = 100 + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + locationText = findViewById(R.id.locationText) + locationManager = getSystemService(LOCATION_SERVICE) as LocationManager + + // التحقق من الأذونات وطلبها إذا لزم الأمر + if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), LOCATION_PERMISSION_REQUEST_CODE) + } else { + startLocationUpdates() + } + } + + // معالجة نتيجة طلب الأذونات + override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + if (requestCode == LOCATION_PERMISSION_REQUEST_CODE && grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + startLocationUpdates() + } else { + locationText.text = "تم رفض إذن الموقع" + } + } + + // بدء تحديثات الموقع + private fun startLocationUpdates() { + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 1f, locationListener) + } + } + + // الاستماع لتحديثات الموقع + private val locationListener = object : LocationListener { + override fun onLocationChanged(location: Location) { + val latitude = location.latitude + val longitude = location.longitude + locationText.text = "الموقع الحالي:\nخط العرض: $latitude\nخط الطول: $longitude" + } + } + + // إيقاف تحديثات الموقع عند الخروج + override fun onPause() { + super.onPause() + locationManager.removeUpdates(locationListener) + } +}