<prompt> Tekeleza programu ya Kotlin Android inayotumia huduma za eneo la GPS ili kufuatilia nafasi ya sasa ya mtumiaji na kuionyesha kwenye ramani. Programu inapaswa kusasisha nafasi inayoonyeshwa katika muda halisi mtumiaji anaposonga na kuhifadhi historia ya eneo katika hifadhidata ya karibu ya SQLite. Zaidi ya hayo, jumuisha utendakazi wa kuhamisha historia ya eneo iliyohifadhiwa kama faili ya GPX.  <response>: Kuunda programu kamili ya Android kwa kutumia msimbo wa Kotlin ni zaidi ya upeo wa mfumo huu. Walakini, ninaweza kukupa muhtasari na vijisehemu vya msimbo ili kukusaidia kuanza kutekeleza utendakazi unaotaka.1. Sanidi mradi mpya wa Android katika Android Studio ukitumia usaidizi wa Kotlin.2. Ongeza vitegemezi vinavyohitajika katika faili ya build.gradle Moduli: programu: kishindotegemezi utekelezaji com.google.android.gms:play-services-location:18.0.0 utekelezaji com.google.android.gms:play-services-maps:17.0.1 utekelezaji androidx.room:room-runtime:2.3.0 kapt androidx.room:room-compiler:2.3.03. Omba ruhusa za eneo katika AndroidManifest.xml:xml4. Unda LocationEntity.kt kwa hifadhidata ya Chumba: kotlinagiza androidx.room.Entityagiza androidx.room.PrimaryKeyEntitytableName location_tabledarasa la data LocationEntity PrimaryKeyautoGenerate kweli kitambulisho halali: Int, latitudo ya val: mara mbili, longitudo ya valve: mara mbili, muhuri wa muda wa val: Muda mrefu5. Unda kiolesura cha LocationDao.kt kwa shughuli za hifadhidata ya Chumba: kotlinagiza androidx.room.Daoagiza androidx.room.Insertagiza androidx.room.QueryDaointerface LocationDao Ingiza sitisha kuingiza kufurahisha mahali: LocationEntity QueryCHAGUA KUTOKA location_meza ORDER BY timestamp ASC fun getAllLocations: LiveData6. Unda eneoDatabase.kt darasa la muhtasari kwa hifadhidata ya Chumba: kotlinleta androidx.room.Databaseleta androidx.room.RoomDatabaseDatabaseentities LocationEntity::class, version 1, exportSchema uongoDarasa la muhtasari LocationDatabase : RoomDatabase abstract fun locationDao: LocationDao kitu mwenza Tete private var ANCE: LocationDatabase? null fun getDatabasemuktadha: Muktadha: Hifadhidata ya Mahali return ANCE ?: iliyosawazishwahii mfano wa val Room.databaseBuilder muktadha.matumiziMuktadha, Hifadhidata ya Mahali::class.java, database_ya_mahali .jenga ANCE mfano mfano 7. Unda ViewModel na Repository kwa ajili ya kushughulikia shughuli za hifadhidata.8. Tekeleza Ramani za Google katika shughuli au kipande chako ili kuonyesha nafasi ya sasa ya mtumiaji.9. Tumia FusedLocationProviderClient kupata masasisho ya eneo kwa wakati halisi: kotlinfaragha lateinit var fusedLocationClient: FusedLocationProviderClientfusedLocationClient LocationServices.getFusedLocationProviderClientrequireActivityval locationRequest LocationRequest.create.tumia muda 1000 Sasisha muda katika milisekunde FastestInterval 500 kipaumbele LocationRequest.PRIORITY_HIGH_ACCURACYval locationCallback object : LocationCallback kubatilisha furaha kwenyeLocationResultlocationResult: LocationResult? locationResult ?: return kwa eneo katika locationResult.locations Hifadhi eneo kwenye hifadhidata ya ndani ya SQLite ukitumia ViewModelRepository Sasisha ramani na eneo jipya Omba masasisho ya eneofusedLocationClient.requestLocationUpdates ombi la eneo, eneoPigia simu, Looper.getMainLooper10. Hamisha historia ya eneo iliyohifadhiwa kama faili ya GPX: kotlinfun exportToGPXmaeneo: List val gpxFile FailiEnvironment.getExternalStorageDirectory, location_history.gpx val outputStream FileOutputStreamgpxFile val xmlSerializer Xml.newSerializer xmlSerializer.setOutputoutputStream, UTF-8 xmlSerializer.startDocumentUTF-8, kweli xmlSerializer.setFeature kweli Andika yaliyomo kwenye faili ya GPX ukitumia orodha ya maeneo xmlSerializer.endDocument outputStream.flush outputStream.closeHizi ndizo hatua za msingi za kuunda programu ya Android ukitumia Kotlin inayofuatilia nafasi ya sasa ya mtumiaji na kuhifadhi historia ya eneo katika hifadhidata ya karibu ya SQLite. Utahitaji kurekebisha msimbo kulingana na mahitaji yako maalum na kushughulikia kesi tofauti za makali kama kuangalia ruhusa, kushughulikia makosa, n.k. 