# Natives Scan-Plugin `NetDiagScanner` Der WebView kann keine Raw-Sockets/ICMP/ARP — die eigentliche Netzwerk-Messung läuft in diesem nativen Android-Plugin (Kotlin). ## Dateien - `NetDiagScannerPlugin.kt` — Capacitor-Plugin mit allen Scan-Methoden - `Snmp.kt` — minimaler SNMP-v2c-GET-Client ## Integration (einmalig, nach `npx cap add android`) 1. **Android-Projekt erzeugen** (falls noch nicht vorhanden): ```bash npm install npm run build npx cap add android ``` 2. **Plugin-Dateien kopieren** nach: ``` android/app/src/main/java/de/data_it_solution/netdiag/ ├── NetDiagScannerPlugin.kt └── Snmp.kt ``` 3. **Plugin registrieren** in `android/app/src/main/java/de/data_it_solution/netdiag/MainActivity.kt`: ```kotlin package de.data_it_solution.netdiag import android.os.Bundle import com.getcapacitor.BridgeActivity class MainActivity : BridgeActivity() { override fun onCreate(savedInstanceState: Bundle?) { registerPlugin(NetDiagScannerPlugin::class.java) super.onCreate(savedInstanceState) } } ``` 4. **Berechtigungen** in `android/app/src/main/AndroidManifest.xml` (innerhalb ``): ```xml ``` `ACCESS_FINE_LOCATION` ist Pflicht, damit Android WLAN-Scan-Ergebnisse liefert. 5. **Kotlin-Coroutines** sicherstellen — in `android/app/build.gradle`: ```gradle dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0" } ``` ## Bekannte Einschränkungen - **ARP/MAC**: `/proc/net/arp` ist ab Android 10 teils nicht mehr lesbar — dann bleiben MAC/Hersteller leer; Geräte werden trotzdem über Ping/Hostname erkannt. - **Hersteller-Lookup**: nur kleiner OUI-Auszug eingebaut. Für volle Abdeckung die IEEE-OUI-Datei als Asset einbinden und in `ouiVendor()` nutzen. - **DHCP-Discover**: Best-effort — Port 68 kann vom System-DHCP-Client belegt sein. - **Durchsatz-Test**: benötigt eine TCP-Sink/Source-Gegenstelle (2. Gerät bzw. iperf3-kompatibler Server). Misst sonst nur Fehlversuche. - **Stresstest**: für lange Läufe sollte ein Foreground-Service ergänzt werden, sonst kann Android den Prozess im Hintergrund beenden. - **PoE-/Strommessung**: bewusst nicht enthalten (Hardware-Grenze) — späteres Modul.