6.3 KiB

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

  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

  1. 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:


Version: 1.0.0
Last Updated: 14 Januari 2026