Sistem Absensi Akademik - Universitas Bhayangkara Jakarta Raya
📋 Deskripsi
Aplikasi mobile berbasis Android untuk sistem absensi mahasiswa dengan validasi lokasi GPS dan verifikasi foto.
🚀 Fitur Utama
✅ Sudah Diimplementasikan:
- 🔐 Login Pengguna - Autentikasi mahasiswa dengan NPM dan Password
- 📍 Pengambilan Koordinat Lokasi - GPS Latitude & Longitude otomatis
- 🏫 Validasi Lokasi Absensi - Validasi radius area kampus (100 meter)
- 📸 Pengambilan Foto Mahasiswa - Foto wajib saat absensi
- 🕒 Pencatatan Waktu Absensi - Timestamp otomatis
- 📄 Riwayat Kehadiran - History absensi mahasiswa
- ⚠️ Notifikasi Ditolak - Alert jika lokasi di luar radius atau error
📁 Struktur File
id.ac.ubharajaya.sistemakademik/
├── LoginActivity.kt # Halaman login
├── MainActivity.kt # Halaman absensi utama
├── HistoryActivity.kt # Halaman riwayat kehadiran
└── utils/
└── SessionManager.kt # Manajemen session login
🔧 Setup & Instalasi
1. Buat File-File Berikut:
Struktur folder:
app/src/main/java/id/ac/ubharajaya/sistemakademik/
├── LoginActivity.kt
├── MainActivity.kt
├── HistoryActivity.kt
└── utils/
└── SessionManager.kt
2. Update AndroidManifest.xml
Ganti file AndroidManifest.xml dengan yang sudah disediakan.
3. Dependencies (build.gradle)
Pastikan dependencies berikut sudah ada di build.gradle.kts (Module: app):
dependencies {
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation("androidx.activity:activity-compose:1.8.2")
implementation(platform("androidx.compose:compose-bom:2024.02.00"))
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
implementation("androidx.compose.material:material-icons-extended")
// Google Location Services
implementation("com.google.android.gms:play-services-location:21.1.0")
}
4. Koordinat Kampus
Di file MainActivity.kt, ganti koordinat kampus sesuai lokasi asli:
val kampusLat = -6.200000 // Latitude kampus
val kampusLon = 106.816666 // Longitude kampus
val maxRadius = 100.0 // Radius dalam meter
🌐 Endpoint API yang Dibutuhkan
1. Login Endpoint
POST https://n8n.lab.ubharajaya.ac.id/webhook/login-mahasiswa
Request Body:
{
"npm": "202310715277",
"password": "password123"
}
Response Success:
{
"success": true,
"nama": "Lalu Muhammad Anggana Subhan",
"prodi": "Teknik Informatika"
}
Response Failed:
{
"success": false,
"message": "NPM atau Password salah"
}
2. Absensi Endpoint (Sudah Ada)
POST https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254
Request Body:
{
"npm": "202310715277",
"nama": "Lalu Muhammad Anggana Subhan",
"latitude": -6.200000,
"longitude": 106.816666,
"jarak_dari_kampus": 50,
"timestamp": 1704067200000,
"waktu": "14/01/2026 10:30:00",
"foto_base64": "base64_encoded_image"
}
3. Riwayat Absensi Endpoint
GET https://n8n.lab.ubharajaya.ac.id/webhook/riwayat-absensi?npm=202310715277
Response:
[
{
"id": "1",
"npm": "202310715277",
"nama": "Lalu Muhammad Anggana Subhan",
"waktu": "14/01/2026 10:30:00",
"latitude": -6.200000,
"longitude": 106.816666,
"jarak_dari_kampus": 50,
"foto_base64": "..."
}
]
📱 Cara Menggunakan Aplikasi
Login
- Buka aplikasi
- Masukkan NPM dan Password
- Klik tombol "Login"
- Jika berhasil, akan masuk ke halaman absensi
Melakukan Absensi
- Pastikan GPS aktif
- Aplikasi otomatis mengambil lokasi
- Klik "Ambil Foto" untuk foto selfie
- Klik "Kirim Absensi"
- Sistem akan validasi:
- ✅ Valid jika dalam radius 100m dari kampus
- ❌ Ditolak jika di luar radius
Lihat Riwayat
- Klik icon History (jam) di toolbar
- Lihat daftar riwayat absensi
- Status ditampilkan:
- ✅ Valid (hijau)
- ❌ Ditolak (merah)
Logout
- Klik icon Logout di toolbar
🔒 Keamanan
- Session Management: Login session tersimpan di SharedPreferences
- Auto Login: Otomatis login jika session masih aktif
- Location Validation: Validasi radius GPS otomatis
- Photo Required: Foto wajib untuk setiap absensi
⚙️ Pengaturan Validasi
Validasi Radius (di MainActivity.kt):
val maxRadius = 100.0 // Ubah sesuai kebutuhan (dalam meter)
Koordinat Kampus:
val kampusLat = -6.200000 // Ganti dengan koordinat kampus
val kampusLon = 106.816666 // Ganti dengan koordinat kampus
🐛 Troubleshooting
GPS Tidak Terdeteksi
- Pastikan GPS/Location aktif di HP
- Coba klik "Refresh Lokasi"
- Pastikan permission lokasi sudah diberikan
Absensi Ditolak
- Cek jarak dari kampus di pesan error
- Pastikan berada dalam radius yang ditentukan
- Koordinat kampus mungkin salah, cek lagi
Login Gagal
- Cek koneksi internet
- Pastikan server n8n aktif
- Cek endpoint login sudah benar
Foto Tidak Muncul
- Pastikan permission kamera sudah diberikan
- Coba ambil foto ulang
📝 Testing Checklist
- Login dengan NPM dan Password valid
- Login gagal dengan kredensial salah
- Auto-login setelah restart app
- Absensi berhasil dalam radius kampus
- Absensi ditolak di luar radius
- Refresh lokasi berfungsi
- Ambil foto berfungsi
- Preview foto tampil
- Riwayat absensi tampil
- Status valid/ditolak sesuai
- Logout berfungsi
🎯 Future Improvements
- Face Recognition untuk validasi foto
- Notifikasi push untuk jadwal absensi
- QR Code scanning
- Offline mode dengan sync
- Export riwayat ke PDF
- Multi-language support
- Dark mode
- Fingerprint authentication
👨💻 Developer
Lalu Muhammad Anggana Subhan
NPM: 202310715277
Universitas Bhayangkara Jakarta Raya
📄 License
Copyright © 2026 Universitas Bhayangkara Jakarta Raya
📞 Support
Jika ada pertanyaan atau bug, hubungi tim IT:
- Email: it@ubharajaya.ac.id
- Phone: (021) xxx-xxxx
Version: 1.0.0
Last Updated: 14 Januari 2026