7.1 KiB

Sistem Akademik - Aplikasi Absensi Mahasiswa

Aplikasi mobile untuk sistem absensi akademik dengan fitur GPS tracking, pengambilan foto, dan manajemen mata kuliah. Dibangun menggunakan Kotlin dan Jetpack Compose dengan Material Design 3.

🎯 Fitur Utama

1. Absensi Akademik

  • Pengambilan lokasi real-time menggunakan GPS
  • Capture foto selfie untuk verifikasi kehadiran
  • Pemilihan mata kuliah yang sedang diambil
  • Submit absensi langsung ke server N8N
  • Riwayat kehadiran dengan detail lengkap

2. Manajemen Mata Kuliah

  • Daftar mata kuliah dengan informasi lengkap
  • Detail dosen pengampu
  • Lokasi/ruangan kuliah
  • Jumlah SKS (Sistem Kredit Semester)

3. Profil Mahasiswa

  • Informasi dasar mahasiswa
  • Program studi
  • Tahun akademik dan semester
  • Status akademik

4. Keamanan

  • Login dengan NPM dan password
  • Permission handling untuk camera dan lokasi
  • Data encryption untuk komunikasi server

📋 Requirements

  • Android SDK: 24 (API Level 24 - Android 7.0) atau lebih tinggi
  • Kotlin: 1.9+
  • Compose: 1.5.3+
  • Google Play Services: Location API v21.0.1

🚀 Instalasi

1. Clone Repository

git clone <repository-url>
cd sistem-akademik

2. Setup Build.gradle

Copy seluruh kode dari artifact build.gradle (Module: app) ke file:

app/build.gradle

Kemudian sync gradle:

  • Klik "Sync Now" di Android Studio

3. Copy File Kotlin

Salin 3 file Kotlin ke folder: app/src/main/java/id/ac/ubharajaya/sistemakademik/

Files:

  • Absensi.kt - Data class untuk absensi
  • LoginActivity.kt - Login screen
  • MainActivity.kt - Main application

4. Update AndroidManifest.xml

Lokasi: app/src/main/AndroidManifest.xml

Pastikan sudah ada:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA"/>

5. Clean & Build

Build → Clean Project
Build → Rebuild Project

6. Run Aplikasi

  • Tekan Shift + F10 atau klik tombol Run
  • Pilih emulator atau device
  • Tunggu app launch

🔐 Login Credentials

Demo Account:

  • NPM: 202310715038
  • Password: Nuryuda28

⚠️ Untuk production, ganti dengan system backend authentication yang proper!

📱 Cara Penggunaan

Tab 1: Absensi Akademik

  1. Ambil Lokasi

    • Aplikasi otomatis mengambil lokasi GPS saat pertama kali dibuka
    • Izinkan akses lokasi saat diminta
  2. Ambil Foto

    • Klik tombol "Ambil Foto"
    • Izinkan akses kamera
    • Ambil selfie untuk verifikasi
  3. Kirim Absensi

    • Pastikan semua data lengkap (lokasi, foto, mata kuliah)
    • Klik tombol "Kirim Absensi"
    • Tunggu konfirmasi dari server
  4. Lihat Riwayat

    • Scroll ke bawah untuk melihat riwayat kehadiran
    • Setiap record menampilkan detail lengkap

Tab 2: Profil

  • Informasi dasar mahasiswa
  • Program studi
  • Status akademik
  • Tahun akademik dan semester

🔄 Integrasi Server

N8N Webhook

Aplikasi mengirim data absensi ke webhook N8N:

URL: https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254
Method: POST
Content-Type: application/json

Data yang dikirim:

{
  "npm": "202310715038",
  "nama": "Nuryuda Maulana Fahmi",
  "latitude": -6.123456,
  "longitude": 106.123456,
  "timestamp": 1705225800000,
  "waktu": "14 Jan 2024 10:30:00",
  "foto_base64": "base64_encoded_image_data"
}

🛠️ Troubleshooting

Error: "Cannot find symbol 'School'"

Solusi: Pastikan import icons di MainActivity.kt sudah benar

import androidx.compose.material.icons.filled.School
import androidx.compose.material.icons.filled.CameraAlt

Error: "LocationServices not found"

Solusi: Pastikan dependency play-services-location ada di build.gradle:

implementation 'com.google.android.gms:play-services-location:21.0.1'

Error: "Permission denied untuk camera/lokasi"

Solusi:

  • Untuk emulator: Settings > Apps > Permissions > izinkan akses
  • Untuk device: Buka Settings > Apps > Sistem Akademik > Permissions

Error: "Gradle Sync Failed"

Solusi:

1. File → Invalidate Caches and Restart
2. Atau close & open ulang Android Studio
3. Build → Clean Project
4. Build → Sync with File System

Foto tidak keluar di riwayat

Solusi: Pastikan bitmap compression berhasil, check logcat untuk error

Lokasi menunjukkan "Lokasi tidak tersedia"

Solusi:

  • Emulator: Gunakan GPS emulation di Android Virtual Device
  • Device: Turn on Location services & izinkan akses GPS

📊 Struktur Project

sistemakademik/
├── Absensi.kt                    # Data class absensi
├── LoginActivity.kt              # Login screen
├── MainActivity.kt               # Main app dengan 3 tab
├── ui/
│   └── theme/
│       └── Theme.kt              # Material Design 3 theme
├── res/
│   ├── values/
│   │   └── strings.xml
│   └── drawable/
└── AndroidManifest.xml

🔧 Customization

Ganti Data Mata Kuliah

Edit function getDaftarMataKuliah() di MainActivity.kt:

fun getDaftarMataKuliah(): List<MataKuliah> {
    return listOf(
        MataKuliah(
            id = "1",
            nama = "Nama Mata Kuliah",
            kode = "IF-401",
            dosen = "Nama Dosen",
            ruangan = "Lokasi Ruang",
            sks = 3
        ),
        // Tambah lebih banyak mata kuliah
    )
}

Ganti Webhook URL

Edit di MainActivity.kt function kirimKeN8n():

val url = URL("https://your-webhook-url-here")

Ganti Data Mahasiswa

Edit di AbsensiScreen function:

val absensi = Absensi(
    npm = "NPM_KAMU",
    nama = "NAMA_KAMU",
    latitude = latitude!!,
    longitude = longitude!!,
    waktu = waktu,
    foto = foto!!
)

📦 Dependencies

Library Version Purpose
androidx.compose.ui 1.5.3 UI Framework
androidx.compose.material3 1.1.1 Material Design 3
com.google.android.gms:play-services-location 21.0.1 GPS Location
org.json 20230227 JSON Handling

🎨 Design

  • Material Design 3 dengan sistem warna yang konsisten
  • Bottom Navigation Bar untuk navigasi antar halaman
  • Card-based Layout untuk presentasi data
  • Rounded Corners di semua elemen UI
  • Icon-based Navigation untuk UX yang lebih baik

📝 License

Proyek ini dibuat untuk keperluan akademik di Universitas Bhayangkara Jakarta Raya.

👥 Author

  • Name: Nuryuda Maulana Fahmi
  • NPM: 202310715038
  • University: Universitas Bhayangkara Jakarta Raya

📞 Support

Untuk pertanyaan atau issue:

  1. Cek bagian Troubleshooting di atas
  2. Lihat logcat untuk error details
  3. Hubungi tim development

Fitur yang Akan Datang

  • Backend authentication server
  • Database lokal dengan Room
  • Geofencing untuk verifikasi lokasi
  • Attendance analytics & reporting
  • QR code scanning
  • Push notifications
  • Offline mode dengan sync kemudian

Last Updated: January 2024 Status: Production Ready