4.2 KiB
📱 Aplikasi Absensi Akademik Berbasis Koordinat dan Foto (Mobile)
👤 Identitas Mahasiswa
- Nama: Dirson Ali Wardana
- NPM: 202310715246---
📌 Deskripsi Proyek
Proyek ini merupakan Tugas Akhir / Project Akhir Mata Kuliah Pemrograman Mobile. Aplikasi ini dikembangkan untuk mengelola absensi mahasiswa secara cerdas dengan validasi ganda: Lokasi GPS (Geofencing) dan Verifikasi Wajah (Selfie).
Aplikasi memastikan kehadiran mahasiswa valid apabila mahasiswa berada dalam radius lokasi kampus dan melakukan pengambilan foto selfie sebagai bukti kehadiran fisik yang kemudian dikirimkan ke server pemantau (n8n & Google Sheets).
📝 Change Log (Modifikasi & Pengembangan)
Berdasarkan starter project yang disediakan, berikut adalah catatan perubahan signifikan yang telah saya implementasikan:
I. Dropdown Mata Kuliah & Integrasi Data: Menambahkan fitur pilihan mata kuliah dan memastikan data namaMatkul terkirim dengan benar ke server melalui payload JSON.
II. Fragment Preview (History Logic): Mengimplementasikan PreviewFragment yang merangkum seluruh data (Foto, Koordinat, Timestamp) sebelum dikirim, serta menambahkan logika penyimpanan otomatis ke DataHolder.historyList setelah pengiriman berhasil.
III. Konversi Base64: Mengimplementasikan fungsi base64ToBitmap dan pengiriman foto_base64 agar foto selfie mahasiswa dapat tersimpan dan dilihat di server.
IV. Modernisasi UI (Material Card & Progress Bar): Menggunakan MaterialCardView untuk tampilan foto preview dan menambahkan ProgressBar (Loading) untuk memberikan feedback visual saat proses pengiriman data ke server.
V. Network Threading: Menggunakan kotlin.concurrent.thread untuk menangani proses pengiriman data ke Webhook agar aplikasi tidak freeze (ANR) saat melakukan request jaringan.
🚀 Fitur Utama
- 🔐 Login Mahasiswa: Autentikasi otomatis dengan data profil tetap (Hardcoded).
- 🎓 Mata Kuliah Selector: Memilih mata kuliah aktif sebelum melakukan absensi.
- 📍 GPS Tracking: Pengambilan koordinat Latitude dan Longitude secara presisi.
- 📸 Selfie Verification: Pratinjau foto selfie sebelum data dikirim ke server.
- 📄 Real-time History: Daftar riwayat absensi yang langsung terupdate menggunakan
RecyclerView/LazyColumn. - 📡 Webhook Integration: Pengiriman data langsung ke sistem n8n Ubhara Jaya.
🛠️ Teknologi yang Digunakan
- Bahasa: Kotlin
- UI Framework: Android XML (View System) & Jetpack Compose (Interoperability).
- Network:
HttpURLConnectiondengan format data JSON. - Kamera: CameraX API.
- Lokasi: Fused Location Provider Client.
- Data Manager:
DataHolder(Singleton) untuk manajemen data antar layar.
🗺️ Mekanisme Absensi
- Mahasiswa memilih mata kuliah.
- Aplikasi mengambil lokasi dan mahasiswa melakukan foto selfie.
- Di halaman Preview, mahasiswa memvalidasi data (Nama, NPM, Lokasi, dan Foto).
- Klik Submit: Data dikonversi ke JSON dan dikirim ke Webhook.
- Jika berhasil (Response 200), data otomatis masuk ke menu Riwayat.
🔐 Izin Aplikasi (Permissions)
Aplikasi memerlukan akses berikut:
android.permission.CAMERA: Untuk mengambil foto selfie.android.permission.ACCESS_FINE_LOCATION: Untuk validasi lokasi presisi.android.permission.INTERNET: Untuk mengirim data absensi ke n8n.
⚠️ Disclaimer & Catatan
- PENGGUNAAN AI: Proyek ini dikembangkan dengan bantuan Kecerdasan Buatan (AI) (ChatGPT/Claude) dalam proses debugging Gradle, perbaikan error
XMLStreamException, dan penyusunan struktur pengiriman data JSON padaPreviewFragment.kt. - PENGEMBANGAN: Aplikasi ini merupakan hasil modifikasi intensif dari starter project yang disediakan untuk memenuhi standar capaian project akhir EAS 2025/2026.
🔗 Link Monitoring & Data
- Monitoring (ntfy): ntfy.ubharajaya.ac.id/EAS
- Data Spreadsheet: Cek Data Absensi
- Webhook Production:
https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254
Dibuat untuk memenuhi Tugas Project Akhir Mata Kuliah Pemrograman Mobile.