import android.content.Context
import com.mentra.bluetoothsdk.Device
import com.mentra.bluetoothsdk.DeviceModel
import com.mentra.bluetoothsdk.GlassesRuntimeState
import com.mentra.bluetoothsdk.MentraBluetoothSdk
import com.mentra.bluetoothsdk.MentraBluetoothSdkCallback
class GlassesController(context: Context) : MentraBluetoothSdkCallback() {
private val sdk = MentraBluetoothSdk.create(
context = context.applicationContext,
listener = this,
)
private var selectedDevice: Device? = null
fun scan() {
sdk.scan(DeviceModel.MENTRA_LIVE, timeoutMs = 10_000) { devices ->
renderDevicePicker(devices, onSelect = { selectedDevice = it })
}
}
fun connect() {
selectedDevice?.let { sdk.connect(it) }
}
fun refreshStatus() {
sdk.requestVersionInfo()
val glasses = sdk.getGlasses()
if (glasses is GlassesRuntimeState.Connected) {
val model = glasses.device.deviceModel?.deviceType ?: "glasses"
val battery = glasses.battery.level?.toString() ?: "unknown"
println("Connected to $model, battery=$battery%")
}
}
override fun onGlassesChanged(glasses: GlassesRuntimeState) {
// Keep app UI derived from SDK status.
println("Glasses changed: $glasses")
}
private fun renderDevicePicker(devices: List<Device>, onSelect: (Device) -> Unit) {
// Render devices in SDK-provided order and call onSelect with the user's choice.
}
fun close() {
sdk.close()
}
}