4.7 KiB
4.7 KiB
📱 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
- Buka aplikasi
- Masukkan NPM dan Password
- Tekan Login
Demo Account:
- NPM:
2024001| Password:password123 - NPM:
2024002| Password:password123 - NPM:
2024003| Password:password123
Absensi
- Izinkan akses Lokasi (GPS)
- Tunggu hingga lokasi Valid (hijau)
- Tekan Ambil Foto
- Izinkan akses Kamera
- Ambil foto selfie
- 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
- Fork repository
- Buat branch baru (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push ke branch (
git push origin feature/AmazingFeature) - Buat Pull Request
📄 License
Distributed under the MIT License. See LICENSE for more information.
gemini chatgpt claude
👨💻 Developer
Universitas Bhayangkara Jakarta Raya
- Website: https://ubharajaya.ac.id
- Email: admin@ubharajaya.ac.id
🙏 Acknowledgments
Made with ❤️ for Academic Attendance System