plugmate-virtual-sensor-access.ino
Exemple d'utilisation de l'API de localisation Android pour lire les coordonnées transmises par l'hôte, car le PlugMate n'a pas de GPS physique.
Le PlugMate virtualise les périphériques comme le GPS. Ce code utilise les API standards Android. L'hôte doit avoir la permission de partager sa position avec le client PlugMate. Les données arrivent via le tunnel sécurisé. Aucune permission de localisation physique n'est requise sur la carte, mais l'application doit demander la permission ACCESS_FINE_LOCATION au niveau de l'UI Android standard.
plugmate-virtual-sensor-access.ino
package com.trustkernel.plugmate.demo
import android.content.Context
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
import android.os.Bundle
import android.util.Log
/**
* Accès aux capteurs virtuels.
* Le PlugMate ne possède pas de GPS physique. Les données sont
* transmises depuis l'hôte via le canal USB-C chiffré.
*/
class VirtualLocationListener(context: Context) : LocationListener {
private val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
init {
try {
// Demande des mises à jour de localisation
// Le PlugMate reçoit des coordonnées simulées ou réelles de l'hôte
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
1000L, // minTime ms
1.0f, // minDistance m
this
)
} catch (e: SecurityException) {
Log.e("PlugMate", "Permission de localisation manquante", e)
}
}
override fun onLocationChanged(location: Location) {
Log.d("PlugMate", "GPS Virtuel: Lat=${location.latitude}, Lon=${location.longitude}")
// Traiter la position
}
override fun onProviderEnabled(provider: String) {}
override fun onProviderDisabled(provider: String) {}
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {}
fun stop() {
locationManager.removeUpdates(this)
}
}