202310715130-Dwifebbryanti-EAS/LOKASI_ABSENSI_FIX.md
2026-01-14 21:33:58 +07:00

4.0 KiB

📍 Perbaikan Sistem Lokasi Absensi

🔧 Masalah yang Diperbaiki

1. Koordinat Kampus Salah

  • Sebelum: Menggunakan koordinat San Jose, USA (37.4220, -122.0840)
  • Sesudah: Menggunakan koordinat UBH Bekasi, Indonesia (-6.2447, 106.9956)

2. Ketidakkonsistenan Radius

  • Sebelum: Berbeda di beberapa tempat (200m vs 250m vs 500m)
  • Sesudah: Konsisten menggunakan 250 meter di semua bagian

📝 Perubahan Kode

File: MainActivity.kt

Perubahan 1: Fungsi isWithinAbsensiRadius()

fun isWithinAbsensiRadius(
    studentLat: Double,
    studentLon: Double,
    campusLat: Double = -6.2447,   // ✅ Koordinat UBH Bekasi
    campusLon: Double = 106.9956,  // ✅ Koordinat UBH Bekasi
    radiusMeters: Float = 250f     // ✅ Radius 250 meter
): Boolean {
    val distance = calculateDistance(studentLat, studentLon, campusLat, campusLon)
    return distance <= radiusMeters
}

Perubahan 2: Pengecekan Lokasi di AbsensiScreen

isLocationValid = distance <= 250f  // ✅ Konsisten dengan fungsi

Perubahan 3: Tampilan Radius di UI

Text("Radius Maksimal: 250 meter")  // ✅ Sesuai dengan validasi

🗺️ Koordinat UBH (Universitas Bhayangkara Jakarta Raya)

Informasi Nilai
Lokasi Bekasi, Jawa Barat, Indonesia
Alamat Jl. Ulupamulur No.1, Margasari, Kec. Bekasi Sel.
Latitude -6.2447°
Longitude 106.9956°
Radius Absensi 250 meter
Catatan Koordinat di-offset untuk privasi

Fitur Sistem Lokasi

1. Otomatis Mengambil Lokasi GPS

  • Aplikasi meminta izin akses lokasi saat masuk ke halaman Absensi
  • Menggunakan Fused Location Provider dari Google Play Services
  • Menampilkan koordinat Latitude & Longitude real-time

2. Validasi Jarak Otomatis

  • Menghitung jarak mahasiswa dari titik kampus
  • Jika ≤ 250 meterStatus: ✓ Valid
  • Jika > 250 meterStatus: ✗ Tidak Valid

3. UI Feedback Real-Time

  • Card berwarna hijau jika lokasi valid
  • Card berwarna merah jika lokasi tidak valid
  • Menampilkan jarak dalam meter
  • Tombol "Kirim Absensi" hanya aktif jika semua syarat terpenuhi

4. Kondisi Absensi Berhasil

Mahasiswa dapat melakukan absensi jika SEMUA kondisi terpenuhi:

  • Lokasi GPS valid (dalam radius 250m)
  • Foto sudah diambil
  • Ada koneksi internet

🚀 Cara Menggunakan

Langkah-langkah Absensi:

  1. Login dengan NPM dan Password
  2. Tunggu sistem mengambil koordinat GPS otomatis
  3. Lihat status lokasi di card informasi:
    • ✓ Valid → Lanjut ke langkah 4
    • ✗ Tidak Valid → Pindah ke zona kampus
  4. Tap tombol "📷 Ambil Foto" untuk ambil selfie
  5. Tap tombol "📤 Kirim Absensi" untuk submit

Testing:

Untuk testing dengan lokasi di luar radius:
- GPS akan membaca lokasi aktual Anda
- Jika di luar radius 250m → Status "Tidak Valid"
- Jika di dalam radius 250m → Status "Valid"

Koordinat kampus referensi:
Latitude:  -6.2447
Longitude: 106.9956

📊 Validasi & Testing

Checklist:

  • Koordinat UBH benar (Bekasi, Indonesia)
  • Radius konsisten 250 meter di semua bagian
  • Validasi lokasi bekerja otomatis
  • UI menampilkan feedback yang jelas
  • Tombol hanya aktif saat semua syarat terpenuhi
  • Data disimpan di database lokal & dikirim ke N8N webhook

🔐 Catatan Keamanan & Privasi

  1. Koordinat di-offset - Koordinat asli kampus tidak ditampilkan ke user
  2. GPS Accuracy - Menggunakan akurasi Fused Location Provider
  3. Data Tersimpan Lokal - Riwayat disimpan di SQLite database lokal
  4. Webhook Production - Data dikirim ke N8N untuk verifikasi server

📱 Info Teknis

  • Database: SQLite (Akademik.db)
  • Location Service: Fused Location Provider
  • Backend: N8N Webhook
  • Permission: ACCESS_FINE_LOCATION, CAMERA, INTERNET

Status: Siap untuk Production
Last Updated: 2026-01-14
Version: 2.0