This shows you the differences between two versions of the page.
pm:prj2025:ajipa:arthur.peter [2025/05/21 15:40] arthur.peter [Software Design] |
pm:prj2025:ajipa:arthur.peter [2025/05/21 16:29] (current) arthur.peter [Rezultate Obţinute] |
||
---|---|---|---|
Line 71: | Line 71: | ||
**Functii adaugate:** | **Functii adaugate:** | ||
- | **ESP32-CAM** | + | ==ESP32-CAM== |
* onTimer() (ISR marcat cu IRAM_ATTR): | * onTimer() (ISR marcat cu IRAM_ATTR): | ||
Line 87: | Line 87: | ||
* checkMotion(): | * checkMotion(): | ||
* Se apelează atunci când motionCheckFlag este setat de întrerupere (onTimer()). Obține un nou cadru de la cameră, apelează detectMotion() și dacă este detectată mișcare, pornește înregistrarea (startRecording()). | * Se apelează atunci când motionCheckFlag este setat de întrerupere (onTimer()). Obține un nou cadru de la cameră, apelează detectMotion() și dacă este detectată mișcare, pornește înregistrarea (startRecording()). | ||
+ | |||
+ | ==Aplicatie Mobila== | ||
+ | |||
+ | * onCreate() (în MainActivity) | ||
+ | * Configurează interfața grafică folosind Jetpack Compose. Creează un Scaffold și încarcă un Composable care afișează un WebView. | ||
+ | * onResume() (în MainActivity) | ||
+ | * La revenirea în aplicație, pornește un Coroutine care testează de mai multe ori dacă adresa camerei (ESP32) este accesibilă. Dacă e disponibilă, încarcă în WebView pagina de la URL-ul camerei; dacă nu, apelează promptToConnect() pentru a cere utilizatorului să se conecteze manual la rețeaua ESP32. | ||
+ | * WebViewContainer(setWebView: (WebView) -> Unit) | ||
+ | * O funcție de tip Composable care creează un WebView cu diverse setări activate: JavaScript, stocare DOM, acces la fișiere, redare media etc. Returnează prin callback obiectul WebView pentru a putea fi folosit ulterior. | ||
+ | * isCameraReachable() | ||
+ | * Funcție suspendată ce încearcă un request tip HTTP GET la adresa camerei (192.168.4.1). Verifică codul de răspuns (2xx înseamnă succes) și returnează true dacă dispozitivul este accesibil. | ||
+ | * promptToConnect(context: Context) | ||
+ | * Afișează un mesaj Toast care cere utilizatorului să se conecteze la WiFi-ul camerei și deschide setările de WiFi ale telefonului (Settings.ACTION_WIFI_SETTINGS). | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | Demo: https://www.youtube.com/watch?v=VeDdLXLpNBQ&ab_channel=ArthurPeter | ||
+ | |||