Open qdot opened 7 months ago
Sorry to hijack the thread. How do you setup the android permissions? I've got the startscan working on desktop, but android nothing happens for me. And android never asked for Bluetooth permission.
@Gibbz Required permissions are listed in the app manifest: https://github.com/intiface/intiface-central/blob/main/android/app/src/main/AndroidManifest.xml
And we ask for them on startup: https://github.com/intiface/intiface-central/blob/main/lib/intiface_central_app.dart#L178
Maybe just and oddity, though i want to mention it. Disclaimer: Not to familiar with the android java bluetooth api.
We are using two different types of Adapter Api. In the Peripheral.java class we are using the BluetoothAdapter.getAdapter() api that is newer and was introduced in API version 18, while in the Adapter.java class we always use BluetoothAdapter.getDefaultAdapter(). That one is older and was deprecated i think in API version 31.
"our Android code runs without a context"
Is this crate helpful? https://docs.rs/ndk-context/latest/ndk_context/struct.AndroidContext.html#method.context
It might work with j4rs
as well: https://github.com/astonbitecode/j4rs/issues/121
Yeah I've got something filed to move to j4rs, it's just going to take more work than I've had time for lately. https://github.com/deviceplug/btleplug/issues/376
Finally got a logcat from someone seeing crashes on Android when trying to start a bluetooth scan.
It looks like something in this line is causing this issue:
Most likely, getDefaultAdapter() is returning null here for some reason, but I'm not sure why. Unfortunately, since our Android code runs without a context, we can't check for system service status before trying this either.
At minimum, we should at least check for null on both the adapter and scanner objects, and throw with a relevant message. Ideally though, it'd be nice to figure out why we're not able to fetch an adapter here.