polarofficial / polar-ble-sdk

Repository includes SDK and code examples. More info https://polar.com/en/developers
Other
447 stars 147 forks source link

Receiving no HR data from Polar Vantage V3 using the AndroidBleSdkTestApp #456

Closed fschulting closed 1 month ago

fschulting commented 2 months ago

Platform your question concerns:

Device:

Description: Hi all,

I'm trying to get the SDK to work with the Polar Vantage V3, using the example AndroidBleSdkTestApp. The device is connecting (using the hardcoded deviceId option), however when trying to stream HR data, nothing seems to happen.

I also have a H10 sensor, for which everything works fine, as I can see the logs of it's HR data. But since the readme also specifies the SDK is able to support the HR feature for the Polar Vantage V3, I'm not sure what goes wrong.

On line 276 in MainActivity.kt, I added the following logs: But of these only 'Log Famke: start streamHR isDisposed is true' and 'Log Famke: Subscribed' show up, suggesting no events are returned in the subscription.

        hrButton.setOnClickListener {
            val isDisposed = hrDisposable?.isDisposed ?: true
            if (isDisposed) {
                Log.d(TAG, "Log Famke: start streamHR isDisposed is ${isDisposed}")
                toggleButtonDown(hrButton, R.string.stop_hr_stream)
                hrDisposable = api.startHrStreaming(deviceId)
                    .observeOn(AndroidSchedulers.mainThread())
                    .doOnSubscribe { Log.d(TAG, "Log Famke: Subscribed") }
                    .subscribe(
                        { hrData: PolarHrData ->
                            Log.d(TAG, "Log Famke: anything" + hrData.samples.count())
                            for (sample in hrData.samples) {
                                Log.d(TAG, "HR     bpm: ${sample.hr} rrs: ${sample.rrsMs} rrAvailable: ${sample.rrAvailable} contactStatus: ${sample.contactStatus} contactStatusSupported: ${sample.contactStatusSupported}")
                            }
                        },

Furthermore, the API LOGGER does show that the HR stream is starting for my Vantage V3 device.

2024-04-19 16:45:43.617 26141-26141 API LOGGER              com.polar.androidblesdk              D  BDBleApiImpl/start Hr online streaming. Device: D733F724
2024-04-19 16:45:43.618 26141-26141 API LOGGER              com.polar.androidblesdk              D  BleHrClient/Start observing HR
2024-04-19 16:45:43.618 26141-26141 API LOGGER              com.polar.androidblesdk              D  BleGattBase/Added notification characteristic for 00002a37-0000-1000-8000-00805f9b34fb
2024-04-19 16:45:43.621 26141-26141 API LOGGER              com.polar.androidblesdk              D  BDDeviceSessionImpl/using deprecated descriptor write
2024-04-19 16:45:43.656 26141-26159 API LOGGER              com.polar.androidblesdk              D  GattCallback/GATT onDescriptorWrite descriptor: 00002902-0000-1000-8000-00805f9b34fb status: 0
2024-04-19 16:45:43.657 26141-26159 API LOGGER              com.polar.androidblesdk              D  BDDeviceSessionImpl/onDescriptorWrite uuid: 00002a37-0000-1000-8000-00805f9b34fb status: 0

I've also reset the watch to factory settings, and on the watch itself the SDK mode is enabled. I also I tried the iOS test app as well, but also there everything works fine for the H10 but not for the Vantage V3. Is there anything I'm doing wrong or missing here?

Kind regards, Famke

fschulting commented 1 month ago

Update: I've got into contact with the Polar B2B helpdesk, and apparently streaming data is only possible when a training session is started on the watch. They provided me with the following instructions:

Here are the instructions how to start data streaming:

(0) Have a phone running the app with Polar SDK paired with the watch. The sensor data sharing must be enabled for the phone in the watch pairing menu (General settings/Pair and sync/Paired devices/SDK/Share). (1) Go to the 'Start training' -menu in watch and choose the desired sport profile. (2) On phone running the app with Polar SDK connect phone with watch. (3) Start the recording in the app. (4) On the watch start the training recording or stay in 'Start training' -menu.

Note! When streaming data we would recommend removing Polar Flow app from the mobile if it was installed. All other phones or Polar devices not used for streaming should be shut down or at least Bluetooth turned off. Also after each streaming session you might need to go back to the watch mode before starting a new exercise & streaming session.

I've tested the demo app again and I'm now able to receive data after starting a training session on the watch.