2026-01-13 13:59:42 +07:00
2026-01-14 17:48:46 +07:00
2026-01-12 11:58:15 +07:00
2026-01-12 11:58:15 +07:00
2026-01-12 11:58:15 +07:00
2026-01-12 11:58:15 +07:00
2026-01-12 11:58:15 +07:00
2026-01-12 11:58:15 +07:00
2026-01-12 15:32:34 +07:00
2026-01-13 14:37:01 +07:00
2026-01-14 17:48:46 +07:00
2026-01-12 11:58:15 +07:00

📱 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:

  1. Mahasiswa berada dalam radius lokasi kampus yang telah ditentukan.
  2. 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:

  1. Otomatisasi Data Profil: Melakukan hardcode data profil pada AbsensiViewModel agar saat login, data Nama (Fadlan Rivaldi) dan NPM (202310715280) langsung terisi secara otomatis.
  2. Manajemen State dengan StateFlow: Mengimplementasikan MutableStateFlow pada AbsensiViewModel untuk menangani data reaktif seperti list Mata Kuliah, Lokasi terkini, dan status Foto yang diambil.
  3. Integrasi Kamera Modern (CameraX): Mengimplementasikan fungsionalitas pengambilan gambar menggunakan library CameraX dan menyimpannya ke dalam State aplikasi (capturedPhoto).
  4. Sistem Lokasi Presisi: Menggunakan play-services-location untuk mendapatkan titik koordinat Latitude dan Longitude secara real-time.
  5. Manajemen History Dinamis: Menambahkan logika untuk memasukkan data absensi yang baru dikirim ke dalam daftar riwayat (_absensiHistory) secara instan di dalam aplikasi.
  6. Penyelesaian Bug XML & Gradle:
    • Memperbaiki error Unresolved reference 'R' melalui sinkronisasi namespace.
    • Memperbaiki error XMLStreamException pada file layout fragment_preview.xml.
    • Merapikan struktur plugin pada build.gradle.kts.

🚀 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

  1. Login dengan NIM dan Password.
  2. Aplikasi mendeteksi lokasi dan meminta izin kamera.
  3. Pilih Mata Kuliah yang sedang berlangsung.
  4. Ambil foto selfie.
  5. 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.


Dibuat untuk memenuhi Tugas Project Akhir EAS 2025/2026.

Description
No description provided
Readme 854 KiB
Languages
Kotlin 100%