4.7 KiB
4.7 KiB
⚡ Quick Reference Guide
🏃 Quick Start
- Buka project di Android Studio
- Sinkronisasi Gradle (automatic atau
./gradlew sync) - Run aplikasi (Shift+F10 atau tombol Run)
- Izinkan permissions saat diminta
📋 File yang Paling Penting
| File | Fungsi |
|---|---|
MainActivity.kt |
UI utama + logic absensi |
AttendanceConfig.kt |
Ubah koordinat/data di sini |
LocationValidator.kt |
Logic validasi lokasi |
N8nService.kt |
Kirim data ke server |
🎯 Ubah Lokasi Referensi
File: app/src/main/java/id/ac/ubharajaya/sistemakademik/config/AttendanceConfig.kt
// Ubah koordinat kampus
const val REFERENCE_LATITUDE = -7.0 // 👈 Ubah ini
const val REFERENCE_LONGITUDE = 110.4 // 👈 Ubah ini
// Ubah radius area (dalam meter)
const val ALLOWED_RADIUS_METERS = 100.0 // 👈 Ubah ini
// Ubah data mahasiswa
const val STUDENT_NPM = "202310715082" // 👈 Ubah ini
const val STUDENT_NAMA = "Fazri Abdurrahman" // 👈 Ubah ini
Cara mendapat koordinat:
- Buka Google Maps
- Klik lokasi → Koordinat muncul di atas
- Format: -7.0035 (latitude), 110.4042 (longitude)
🧪 Test Webhook (Sebelum Production)
Edit: MainActivity.kt baris ~265:
isTest = true // 👈 Set ke true untuk test
// Setelah test sukses, ubah ke:
isTest = false // Untuk production
Cek di: https://n8n.lab.ubharajaya.ac.id/webhook-test/...
🐛 Debug Tips
Check Logs
# Di Android Studio
View → Tool Windows → Logcat
Cari: N8nService atau MainActivity
Test Lokasi Tertentu
// Di MainActivity, buat hardcoded location untuk test:
state = state.copy(
location = LocationData(
latitude = -7.0035,
longitude = 110.4042
)
)
Mock GPS (di Emulator)
Tools → Device Manager → Extended Controls → Location
Masukkan latitude/longitude yang ingin ditest
📱 Build & Deploy
Build APK (untuk test)
./gradlew assembleDebug
# APK ada di: app/build/outputs/apk/debug/
Build Release APK (untuk production)
./gradlew assembleRelease
# APK ada di: app/build/outputs/apk/release/
🔧 Fix Umum
"Permission denied" saat GPS
→ Buka Settings app → Izin Aplikasi → Location → Allow
"GPS tidak berfungsi"
→ Nyalakan Location Services di device settings
"Foto tidak muncul"
→ Izinkan Camera permission di settings
"Server error 500"
→ Check N8n workflow di dashboard
"Tidak bisa connect"
→ Cek internet connection & webhook URL
📍 Cara Kerja Validasi Lokasi
- Ambil GPS: Latitude & Longitude dari device
- Hitung Jarak: Formula Haversine ke referensi
- Compare: Jarak vs ALLOWED_RADIUS_METERS
- Hasil: Valid ✓ atau Invalid ✗
Contoh:
- Referensi: -7.0, 110.4
- GPS: -7.0035, 110.4042
- Jarak: ~500m
- Radius: 100m
- Hasil: INVALID (500m > 100m)
📡 API Response Codes
| Code | Arti | Action |
|---|---|---|
| 200 | ✓ Sukses | Toast "Diterima", reset form |
| 400 | ✗ Data error | Tampilkan error message |
| 500 | ✗ Server error | Retry atau hubungi admin |
🎮 UI Components Cheat Sheet
LocationStatusCard
- Tampilkan: Latitude, Longitude, Jarak, Status
- Auto update saat GPS berubah
PhotoPreviewCard
- Preview: Foto dari camera
- Tombol: Ambil Ulang (untuk ganti foto)
ErrorAlertCard
- Tampilkan: Error message
- Dismissable: Tombol X
SubmitButtonWithLoader
- Loading: Spinner saat submit
- Disabled: Jika data belum lengkap
🔑 Key Variables
// State management
var state by remember { mutableStateOf(AttendanceState()) }
// Fused location
val fusedLocationClient = LocationServices.getFusedLocationProviderClient(context)
// API service
val n8nService = remember { N8nService(activity) }
// Current location
state.location?.latitude
state.location?.longitude
// Current photo
state.foto // Bitmap
// Validation
state.validationResult.isValid
state.validationResult.message
🚀 Deploy Steps
- Update AttendanceConfig.kt (koordinat, NPM, nama)
- Test dengan WEBHOOK_TEST (set isTest = true)
- Verify di N8n dashboard
- Switch ke WEBHOOK_PRODUCTION (set isTest = false)
- Build APK release:
./gradlew assembleRelease - Distribute ke device/playstore
📊 Useful URLs
| Purpose | URL |
|---|---|
| Test Webhook | https://n8n.lab.ubharajaya.ac.id/webhook-test/... |
| Production Webhook | https://n8n.lab.ubharajaya.ac.id/webhook/... |
| N8n Dashboard | https://n8n.lab.ubharajaya.ac.id |
| Attendance Check | https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0... |
| Ntfy Monitor | https://ntfy.ubharajaya.ac.id/EAS |
Perlu bantuan? Check DOKUMENTASI.md untuk penjelasan lebih detail.