4.2 KiB
4.2 KiB
📱 Aplikasi Absensi Akademik Berbasis Koordinat dan Foto (Mobile)
👤 Identitas Mahasiswa
- Nama: Fadlan Rivaldi
- NPM: 202310715280
📌 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 yang telah ditentukan.
- Mahasiswa mengambil foto selfie sebagai bukti kehadiran fisik pada saat jam mata kuliah berlangsung.
📝 Change Log (Modifikasi & Pengembangan)
Berdasarkan starter project yang disediakan, berikut adalah perubahan dan fitur yang telah saya implementasikan:
- Otomatisasi Data Profil: Melakukan hardcode data profil pada
AbsensiViewModelagar saat login, data Nama (Fadlan Rivaldi) dan NPM (202310715280) langsung terisi secara otomatis. - Manajemen State dengan StateFlow: Mengimplementasikan
MutableStateFlowpadaAbsensiViewModeluntuk menangani data reaktif seperti list Mata Kuliah, Lokasi terkini, dan status Foto yang diambil. - Integrasi Kamera Modern (CameraX): Mengimplementasikan fungsionalitas pengambilan gambar menggunakan library CameraX dan menyimpannya ke dalam State aplikasi (
capturedPhoto). - Sistem Lokasi Presisi: Menggunakan
play-services-locationuntuk mendapatkan titik koordinat Latitude dan Longitude secara real-time. - Manajemen History Dinamis: Menambahkan logika untuk memasukkan data absensi yang baru dikirim ke dalam daftar riwayat (
_absensiHistory) secara instan di dalam aplikasi. - Penyelesaian Bug XML & Gradle:
- Memperbaiki error
Unresolved reference 'R'melalui sinkronisasi namespace. - Memperbaiki error
XMLStreamExceptionpada file layoutfragment_preview.xml. - Merapikan struktur plugin pada
build.gradle.kts.
- Memperbaiki error
🚀 Fitur Utama
- 🔐 Login Mahasiswa: Autentikasi dummy yang langsung mengarahkan ke profil mahasiswa.
- 🎓 Pemilihan Mata Kuliah: Daftar mata kuliah dinamis (Pemrograman Mobile, Basis Data, dll).
- 📍 LBS (Location Based Service): Deteksi otomatis lokasi mahasiswa.
- 📸 Selfie Verification: Integrasi kamera depan untuk pengambilan foto bukti kehadiran.
- 📄 History Absensi: Menampilkan riwayat absensi (Mata kuliah, Tanggal, Waktu, dan Status).
- 🕒 Auto Timestamp: Pencatatan waktu otomatis saat tombol "Submit" ditekan.
🛠️ Teknologi yang Digunakan
- Bahasa: Kotlin
- UI Framework: Jetpack Compose (Modern UI) & XML Layout (Interoperability).
- Architecture: MVVM (Model-View-ViewModel).
- State Management: StateFlow & LiveData.
- Kamera: CameraX API.
- Lokasi: Fused Location Provider.
- Dependency Management: Gradle Version Catalog (libs.versions.toml).
🗺️ Mekanisme Absensi
- Login dengan NIM dan Password.
- Aplikasi mendeteksi lokasi dan meminta izin kamera.
- Pilih Mata Kuliah yang sedang berlangsung.
- Ambil foto selfie.
- Tekan tombol Submit. Sistem akan mengirimkan data (Nama, NPM, Koordinat, Foto, dan Matkul) ke server melalui Webhook.
🔐 Izin Aplikasi (Permissions)
Aplikasi memerlukan akses:
CAMERA: Untuk mengambil foto selfie.ACCESS_FINE_LOCATION: Untuk validasi lokasi kampus.INTERNET: Untuk mengirim data absensi ke server.
⚠️ Disclaimer & Catatan
- PENGGUNAAN AI: Proyek ini dikembangkan dengan bantuan Kecerdasan Buatan (AI) (ChatGPT/Claude) dalam proses debugging Gradle, perbaikan error XML, dan penyusunan struktur dokumentasi ini.
- PENGEMBANGAN: Aplikasi dikembangkan dari starter project dengan modifikasi pada bagian logika ViewModel dan UI Composable untuk menyesuaikan kebutuhan tugas.
🔗 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 EAS 2025/2026.