4.0 KiB
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 meter → Status: ✓ Valid
- Jika > 250 meter → Status: ✗ 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:
- Login dengan NPM dan Password
- Tunggu sistem mengambil koordinat GPS otomatis
- Lihat status lokasi di card informasi:
- ✓ Valid → Lanjut ke langkah 4
- ✗ Tidak Valid → Pindah ke zona kampus
- Tap tombol "📷 Ambil Foto" untuk ambil selfie
- 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
- Koordinat di-offset - Koordinat asli kampus tidak ditampilkan ke user
- GPS Accuracy - Menggunakan akurasi Fused Location Provider
- Data Tersimpan Lokal - Riwayat disimpan di SQLite database lokal
- 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