2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:22:32 +07:00
2026-01-14 21:35:43 +07:00
2026-01-14 21:22:32 +07:00

📱 Sistem Absensi Akademik

Aplikasi mobile berbasis Android untuk sistem absensi mahasiswa dengan validasi lokasi GPS dan pengambilan foto.


🎯 Fitur Utama

  • 🔐 Login Pengguna - Autentikasi dengan NPM dan Password
  • 📍 Pengambilan Lokasi - Deteksi GPS real-time (Latitude & Longitude)
  • 🏫 Validasi Radius - Validasi lokasi dalam radius 100m dari kampus
  • 📸 Foto Mahasiswa - Pengambilan foto saat absensi
  • 🕒 Pencatatan Waktu - Timestamp otomatis setiap absensi
  • 📄 Riwayat Kehadiran - History absensi tersimpan lokal
  • ⚠️ Notifikasi - Alert jika absensi ditolak (lokasi tidak valid)
  • 🌐 Integrasi Server - Kirim data ke webhook n8n

🛠️ Tech Stack

  • Language: Kotlin
  • UI Framework: Jetpack Compose
  • Design: Material Design 3
  • Location: Google Play Services (Fused Location Provider)
  • Storage: SharedPreferences
  • Network: HttpURLConnection
  • Min SDK: API 24 (Android 7.0)
  • Target SDK: API 34 (Android 14)

📁 Struktur Project

app/src/main/java/id/ac/ubharajaya/sistemakademik/
│
├── MainActivity.kt                      # Entry point & navigation
│
├── models/
│   └── DataModels.kt                   # Data class (User, AbsensiRecord)
│
├── utils/
│   ├── SessionManager.kt               # Manajemen sesi login
│   ├── LocationUtils.kt                # Validasi lokasi & radius
│   ├── NetworkUtils.kt                 # HTTP request ke server
│   └── Constants.kt                    # Konstanta (dummy users)
│
└── ui/
    └── screens/
        ├── LoginScreen.kt              # Halaman login
        ├── AbsensiScreen.kt            # Halaman absensi utama
        ├── RiwayatScreen.kt            # Halaman riwayat
        └── ProfilScreen.kt             # Halaman profil & logout

🚀 Instalasi & Setup

1. Clone Repository

git clone https://github.com/username/sistem-absensi-akademik.git
cd sistem-absensi-akademik

2. Buka di Android Studio

  • Buka Android Studio
  • File → Open → Pilih folder project
  • Tunggu Gradle sync selesai

3. Konfigurasi

Edit file utils/LocationUtils.kt:

const val KAMPUS_LAT = -6.175392     // Koordinat kampus Anda
const val KAMPUS_LON = 106.827153    // Koordinat kampus Anda
const val RADIUS_METER = 100.0       // Radius dalam meter

Edit file utils/NetworkUtils.kt:

private const val WEBHOOK_URL = "https://your-webhook-url.com"

4. Build & Run

  • Sambungkan device Android atau jalankan emulator
  • Run → Run 'app'

📱 Cara Penggunaan

Login

  1. Buka aplikasi
  2. Masukkan NPM dan Password
  3. Tekan Login

Demo Account:

  • NPM: 2024001 | Password: password123
  • NPM: 2024002 | Password: password123
  • NPM: 2024003 | Password: password123

Absensi

  1. Izinkan akses Lokasi (GPS)
  2. Tunggu hingga lokasi Valid (hijau)
  3. Tekan Ambil Foto
  4. Izinkan akses Kamera
  5. Ambil foto selfie
  6. Tekan Kirim Absensi

Riwayat & Profil

  • Tab Riwayat: Lihat history absensi
  • Tab Profil: Info user & logout

🔑 Permissions

Aplikasi memerlukan permission berikut:

  • INTERNET - Kirim data ke server
  • ACCESS_FINE_LOCATION - GPS akurasi tinggi
  • ACCESS_COARSE_LOCATION - GPS fallback
  • CAMERA - Ambil foto mahasiswa

📊 Data Format (Server)

JSON yang dikirim ke webhook:

{
  "npm": "202310715043",
  "nama": "Muhammad Rafly Al Fathir",
  "latitude": -6.175392,
  "longitude": 106.827153,
  "timestamp": 1705244400000,
  "foto_base64": "base64_encoded_image...",
  "jarak_meter": 45
}

📝 Changelog

Version 1.0.0 (14 Januari 2026)

  • Implementasi sistem login
  • Validasi lokasi dengan radius
  • Pengambilan foto mahasiswa
  • Riwayat absensi lokal
  • Integrasi webhook n8n
  • 🐛 Fixed Android 13+ compatibility

🤝 Contributing

  1. Fork repository
  2. Buat branch baru (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push ke branch (git push origin feature/AmazingFeature)
  5. Buat Pull Request

📄 License

Distributed under the MIT License. See LICENSE for more information. gemini chatgpt claude


👨‍💻 Developer

Universitas Bhayangkara Jakarta Raya


🙏 Acknowledgments


Made with ❤️ for Academic Attendance System

Description
No description provided
Readme 817 KiB
Languages
Kotlin 100%