I am using BLE to fetch data from an Internet web service and have many users complaining about connectivity issues. I am experience the same issues on my Fenix 5, that the watch seems to be connected over BT to the mobile Phone and shows up as connected in the garmin Connect mobile app. I also check System.getDeviceSettings().phoneConnected in my app, and it is returning true
The makewebrequest returns various error messages, e.g.: BLE_ERROR, BLE_HOST_TIMEOUT, BLE_QUEUE_FULL.
I can resolve the issue by manually disable and re-enable the phone connection from the setting menu on the watch, then usually the BLE connection gets re-established and things start working again. It seems like the BLE system is a bit unstable in general, and perhaps not designed for this use-case. But, more and more apps and data fields today rely on data from the Internet, so I think it would be a good idea to revise the BLE framework and see what improvements can be done.
Meanwhile, I think a good quick-fix would be to disable and re-enable the phone connection from the app itself, the same way as i do manually from the settings menu, but not sure if that is possible and if so, which method to use. Has anyone tried it?
Also, is there a way to check status of the BLE connection before attempting a makewebreques? (Im already checking with getDeviceSettings().phoneConnected but it will return true even though the BLE connection is not working)
Thank you in advance
/Fredrik