# 🎓 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)`: ```kotlin 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: ```kotlin 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": "12345", "password": "password123" } Response Success: { "success": true, "nama": "Arif R D", "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": "12345", "nama": "Arif R D", "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=12345 Response: [ { "id": "1", "npm": "12345", "nama": "Arif R D", "waktu": "14/01/2026 10:30:00", "latitude": -6.200000, "longitude": 106.816666, "jarak_dari_kampus": 50, "foto_base64": "..." } ] ``` --- ## 📱 Cara Menggunakan Aplikasi ### **Login** 1. Buka aplikasi 2. Masukkan NPM dan Password 3. Klik tombol "Login" 4. Jika berhasil, akan masuk ke halaman absensi ### **Melakukan Absensi** 1. Pastikan GPS aktif 2. Aplikasi otomatis mengambil lokasi 3. Klik "Ambil Foto" untuk foto selfie 4. Klik "Kirim Absensi" 5. Sistem akan validasi: - ✅ **Valid** jika dalam radius 100m dari kampus - ❌ **Ditolak** jika di luar radius ### **Lihat Riwayat** 1. Klik icon History (jam) di toolbar 2. Lihat daftar riwayat absensi 3. 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):** ```kotlin val maxRadius = 100.0 // Ubah sesuai kebutuhan (dalam meter) ``` **Koordinat Kampus:** ```kotlin 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 **Arif R D** NPM: 12345 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