polarofficial / polar-ble-sdk Goto Github PK
View Code? Open in Web Editor NEWRepository includes SDK and code examples. More info https://polar.com/en/developers
License: Other
Repository includes SDK and code examples. More info https://polar.com/en/developers
License: Other
Hi Polar team :)
I have just updated my OH1 to latest firmware and downloaded your iOS-SDK. I then wanted to get PPI samples and added some prints in the ppiToggle(_ sender:) method:
case .next(let data):
print("data timestamp: \(data.timeStamp)") // always zero!
for item in data.samples {
NSLog("PPI: \(item.ppInMs); errorEstimate: \(item.ppErrorEstimate)")
}
But 'date.timestamp' is always zero!?
Or have I misunderstood the interface?
I also tried to call setTime (succeeded) once connected but that made no difference...
The reason for this is that I wanted to try to export the Beat-To-Beat-Interval to Apple's HealthKit (iOS 13). But maybe this is not possible...
Update: I do get timestamp for Acc. and PPG samples. So it seems to be a problem for PPI only.
Thanks!
Hello, hope this finds you well.
I have been experimenting with the polar OH1, the set up went smooth with a samsung galaxy note 5. But when i tried to run the app from a lenovo e7 tablet, it failed. This is from the logcat when i tried to connect to device.
OH1 is updated to latest 2.0.10 firmware.
2019-06-06 01:12:29.753 8180-8180/polar.com.androidblesdk D/Polar BHE: version: 2.1.0
2019-06-06 01:12:29.757 8180-8180/polar.com.androidblesdk D/Polar BHE: BLE power: true
2019-06-06 01:12:29.797 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ADMIN_STOP_SCAN
2019-06-06 01:12:29.799 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:29.799 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ENTRY
2019-06-06 01:12:29.799 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ADMIN_START_SCAN
2019-06-06 01:12:29.799 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: EXIT
2019-06-06 01:12:29.800 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ENTRY
2019-06-06 01:12:29.871 8180-8180/polar.com.androidblesdk D/Polar BHE: BLE power: true
2019-06-06 01:12:29.889 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ADMIN_STOP_SCAN
2019-06-06 01:12:29.889 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:29.890 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ENTRY
2019-06-06 01:12:29.890 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ADMIN_START_SCAN
2019-06-06 01:12:29.890 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: EXIT
2019-06-06 01:12:29.891 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ENTRY
2019-06-06 01:12:30.594 8180-8180/polar.com.androidblesdk D/Polar BHE: bt ready
2019-06-06 01:12:30.596 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ADMIN_STOP_SCAN
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ENTRY
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ADMIN_START_SCAN
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: EXIT
2019-06-06 01:12:30.597 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ENTRY
2019-06-06 01:12:33.621 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: CLIENT_START_SCAN
2019-06-06 01:12:33.622 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:33.622 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:SCANNING action: ENTRY
2019-06-06 01:12:33.623 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/timestamps left: 0
2019-06-06 01:12:33.623 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Scan started -->
2019-06-06 01:12:33.641 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Scan started <--
2019-06-06 01:12:50.932 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:SCANNING action: ADMIN_STOP_SCAN
2019-06-06 01:12:50.932 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:SCANNING action: EXIT
2019-06-06 01:12:50.932 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Stop scanning
2019-06-06 01:12:50.943 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ENTRY
2019-06-06 01:12:50.943 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: ADMIN_START_SCAN
2019-06-06 01:12:50.944 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:STOPPED action: EXIT
2019-06-06 01:12:50.945 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: ENTRY
2019-06-06 01:12:50.947 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:IDLE action: EXIT
2019-06-06 01:12:50.948 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/commandState state:SCANNING action: ENTRY
2019-06-06 01:12:50.949 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/timestamps left: 1
2019-06-06 01:12:50.949 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Scan started -->
2019-06-06 01:12:50.971 8180-8180/polar.com.androidblesdk D/Polar BHE: BDScanCallback/Scan started <--
This is where the log stops.
No exceptions where thrown, all permissions are acquired.
The tablet has bluetooth 4.0 according to specification sheet.
If i enter the bluetooth page in device settings, i can see the device and pair to it.
I tried the following steps.
Paired to the oh1 and tried to connect.
Unpaired to the oh1 and tried to connect.
Factory reset oh1 and tried to connect.
Tried to connect to 2.0.8 firmware before updating.
Nothing connected.
Some help would be much appreciated.
Thank you.
Hi,
i am trying to test the PPI and the PPG Feature of the OH1 sensor connected to your Android example application. The demo application works well in terms of printing current heartrate values to the log console:
Example Message (HR is working):
2019-04-05 23:18:25.171 32086-32086/polar.com.androidblesdk D/MainActivity: HR value: 72 rrsMs: [] rr: [] contact: false,false
But if I hit the PPG_STREAM or the PPI_STREAM button in the APP i only see the following line in log:
2019-04-05 23:20:10.944 32086-32086/polar.com.androidblesdk E/MainActivity: null
Furthermore while debugging i can clearly see that the ppiFeatureReady and the ppgFeatureReady Methods in the MainActivity.java class are never be called.
Maybe you got an advice what I Need to do to make this work.
Thank you for your reply.
Best regards,
Mark
As is, the SDK only works with Polar devices; i.e. you have to enter a serial number, and it filters out non-Polar device names. I would like to use it with other devices, many of which support the BLE Heart Rate Service.
On looking through the code it looks like the access to Android Bluetooth is through the BleDeviceSession and its descendants. In particular the basic Android BLE interface is in the BluetoothDevice and BlutoothGatt members of BleDeviceDeviceSessionImpl. However, since these are private I cannot access them.
I could, for example, connect to other devices by extending BleDeviceDeviceSessionImpl and adding another connect method. I could also do other things like scan for devices or get more device info.
I don't claim to understand the SDK code completely, but it looks like the identifier doesn't really have to be a Polar serial number, at least for non-Polar-specific features. It seems to be primarily used for connecting. Presumably there would be an Exception generated if one tried to use those features and they are not available (or else nothing would happen as with the ECG for non-updated H10's).
So far my experience is that the SDK is robust, and I am sure you have put more effort and expertise into it than whatever I might have done myself. However, I don't want to use it to write apps that are limited to Polar (when that is not necessary). It's not that I don't like Polar. It's that I have devices like the Corsense finger sensor that Polar does not make.
So is this intentional? Cast in stone? What are your thoughts?
Thanks.
Using either Main or Develop Branch ... PolarBleSdk.framework issues when uploading to App Store. Contins Unsupported Architectures [x_86_64, i386]. And PolarBleSdk does not have proper segment alignment. Try rebulding with the latest Xcode (from Apple). Same for RxAtomic and RxSwift frameworks. How to fix this?
When I connect to the OH1 from my Android app using the standard Battery Profile, I see notifications coming in for changes in the battery charge percentage (in multiples of 10), as expected.
However, if I use the Polar SDK, I get a callback to batteryLevelReceived
upon connection, but never any update to the battery charge after that. HR and accelerometer data are received as expected.
For a workaround for the 20min PPI stream limit (see issue #34 ), we've automatically reset the PPI streaming.
But very often, the PPI streaming does not restart; the light passes from flashing purple to flashing green, rather than passing flashing purple to flashing white (which the OH1 does at the beginning of a PPI stream); and no PPI value is ever sent.
The way we did is frankly abrupt: we just nullify the disposable, then relaunch the subscribe.
Is there a better, sure-shot way to reset it ?
Thank you.
Have HR10 device. How to get RR data and PolarBleApiDeviceHrObserver to work?
I'm using the iOS Example app, hitting the buttons and get this in Xcode log ..
Polar H10 514B382E HR BROADCAST: 53
Polar H10 514B382E HR BROADCAST: 53
Polar H10 514B382E HR BROADCAST: 53
[BLE] commandState state:SCANNING action: CLIENT_REMOVED
[BLE] commandState state:SCANNING action: EXIT
[BLE] commandState state:IDLE action: ENTRY
start ecg error: PolarBleSdk.DeviceNotFound
recording start fail: PolarBleSdk.DeviceNotFound
What is causing DeviceNotFound if Broadcast is working? Is PolarBleApiDeviceHrObserver in a working state? Thank you,
Since I did not find another way to contact somebody responsible for the API documentation, I'm posting this here:
The (otherwise great) API documentation says that the list of daily activities can be retrieved by the URL GET /v3/users/{user-id}/activity-transactions/{transaction-id}
yielding a response in the form:
{
"activity-logs": [
"https://www.polaraccesslink.com/v3/users/12/activity-transactions/34/activities/56",
"https://www.polaraccesslink.com/v3/users/12/activity-transactions/34/activities/120"
]
}
Other than stated in the documentation the key for the activities URLs is not activity-logs
but activity-log
:
Is there any plan to add support for computers (Windows, Linux, ...)?
Currently I‘m using my own implementation to interpret the data using Bluetooth GATT (HeartRate). It would be great to get an official SDK, which would allow to view even more data (such as the ECG signal).
I am trying to get PPI from OH1(firmware2.0.11).But I can get only 20 minutes PPI.
Is this due to internal logic of OH1? If it is not so, Do you have any idea about this problem?
There are no error in my logcat and other data(HR) continue being got.
Hi,
Has the ecg firmwire of H10 been released?
I didn't receive any update notification. Could you help me please?
Thank you very much
When I connect my app (using Polar SDK) to the OH1 I am wearing, it receives HR notifications (hrNotificationReceived
callback) as expected.
If I then remove the sensor from the armband and click it in the charger cradle, the connection stays alive and my app continues to receive HR notifications, continuously the same as the last correct measurement. And since skin detection is not supported, there is no way to distinguish this from normal measurements.
I observed that the LED is turned off as soon as the sensor starts charging, and accelerometer data stops streaming. HR notifications continue though. HR data notifications only stop when unplugging the sensor from the charger.
Dear Polar Team,
using your Android SDK, my goal is to record RR intervals on the device for later download. I start recording like this
`
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
getApi()
.setLocalTime(connectedDevice.deviceId, calendar)
.andThen(getApi().startRecording(connectedDevice.deviceId,
"TEST_APP_ID",
PolarBleApi.RecordingInterval.INTERVAL_1S,
PolarBleApi.SampleType.RR)).subscribe();
`
and I retrieve all exercise data like this
api.listExercises(getConnectedDevice().deviceId) .flatMapSingle(new Function<PolarExerciseEntry, Single<PolarExerciseData>>() { @Override public Single<PolarExerciseData> apply(final PolarExerciseEntry polarExerciseEntry) throws Exception { return api.fetchExercise(getConnectedDevice().deviceId, polarExerciseEntry); } }) .toObservable().subscribe();
But when I look at the PolarExerciseData.hrSamples, it is always empty. If you have an idea what goes wrong it would be greatly appreaciated
Hi, Any chance of releasing the SDK/library for Linux as well? Thanks.
This error occurred when Xcode updated to version 10.2
Module compiled with Swift 4.2.1 cannot be imported by the Swift 5.0 compiler
Code signing PolarBleSdk.framework fails when validating archive: "Code object is not signed at all." Code signing succeeds without PolarBleSdk framework.
LOGS:
2019-07-02 06:31:26 +0000 Processing step: IDEDistributionCodesignStep
2019-07-02 06:31:26 +0000 Entitlements for <IDEDistributionItem: 0x7fb77cc2caf0 'com.polar.PolarBleSdk' '<DVTFilePath:0x7fb77cc65510:'/Users/user/Library/Developer/Xcode/Archives/2019-07-02/XXXApp 02-07-2019, 9.23.xcarchive/Products/Applications/XXXApp.app/Frameworks/PolarBleSdk.framework'>'>: {
}
2019-07-02 06:31:26 +0000 Writing entitlements for <IDEDistributionItem: 0x7fb77cc2caf0 'com.polar.PolarBleSdk' '<DVTFilePath:0x7fb77cc65510:'/Users/user/Library/Developer/Xcode/Archives/2019-07-02/XXXApp 02-07-2019, 9.23.xcarchive/Products/Applications/XXXApp.app/Frameworks/PolarBleSdk.framework'>'> to: /var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/entitlements~~~emJgtm
2019-07-02 06:31:26 +0000 Running /usr/bin/codesign '-vvv' '--force' '--sign' '3F818C3735CDDE2BC1A90FAF59AC108CBB16650D' '--entitlements' '/var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/entitlements~~~emJgtm' '--preserve-metadata=identifier,flags,runtime' '/var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/Root/Payload/XXXApp.app/Frameworks/PolarBleSdk.framework'
2019-07-02 06:31:26 +0000 /var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/Root/Payload/XXXApp.app/Frameworks/PolarBleSdk.framework: replacing existing signature
2019-07-02 06:31:26 +0000 /var/folders/zc/qhf5ttlx2z99y87gqmlkfj7m0000gn/T/XcodeDistPipeline.~~~ajDoUe/Root/Payload/XXXApp.app/Frameworks/PolarBleSdk.framework: code object is not signed at all
2019-07-02 06:31:26 +0000 /usr/bin/codesign exited with 1
I extracted the androidBleTestrApp from the ZIP download as a single project. I also copied libs from polar-sdk-android to the project. On opening the project in Android Studio, it asks to configure the Gradle wrapper. (There is no gradle directory in the ZIP download.)
I then get this error:
C:$Recycle.Bin\S-1-5-18
Open File
This is likely owing to the
copy {
from("$projectDir/../../../../polar-sdk-android/libs")
into("$projectDir/libs")
}
since the path is not right. (Also it should not be needed if I copy the libs directory manually.)
I have not been able to get around it by commenting out these lines or the preBuild.dependsOn copySdk.
If I create a project polar-sdk-android project with the libs, and change the "from" line to be correct for that project:
from("$projectDir/../polar-sdk-android/libs")
then I get
ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@release/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@release/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Failed to transform file 'polar-ble-sdk.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
ERROR: Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Failed to transform file 'polar-protobuf-release.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform
Show Details
Affected Modules: app
So there seems to be something wrong with the files in lib that I cannot figure out.
In general there needs to be instructions to build the Android example alone without extracting the whole Github tree. The ones in README.md did not help me.
Thanks.
This is a feature request. It would be nice to have a PolarBleApiCallbackAdapter that works similar to a MouseAdapter. Then you wouldn't have to clutter your code with api callbacks in which you are not interested.
It is trivial. I am including what I did.
Hi,
I see that there is a api.backgroundEntered();
method.
I'd like to know a little bit of details on how it works if possible.
On Android there are many ways to achieve background functionalities, which one did you use?
When is it going to be killed by the system?
Does it run on the main thread?
In the callback with the HR results for example can we do arbitrary things, or do we have restricted resources?
As I understand iOS has a background functionality too, can you also expand on that?
I did experiment a bit with it, but I'd like to know a little more from you.
I couldn't find any information on the documentation.
Thanks.
Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 compiler
In my java class, I declare the variable:
PolarBleApi api = PolarBleApiDefaultImpl.defaultImplementation(reactContext, PolarBleApi.FEATURE_HR);
then in my method I hit later, I call autoConnect:
api.autoConnectToPolarDevice(-50, null).subscribe();
I just keep getting this error:
api.autoConnectToPolarDevice(-50, null).subscribe();
^
symbol: method autoConnectToPolarDevice(int,<null>)
location: variable api of type PolarBleApi
1 error```
Thanks for any insight.
I pulled data that was synced to Google Fit from a polar H10. A heart rate measurement in beats per minute is stored once every second. This is suboptimal because the H10 is actually more precise and measures RR intervals. This information is lost when storing bpm exactly 1 second apart. Can I suggest that the heart rate be stored at the intervals corresponding to the RR interval instead of the arbitrary 1 second interval?
Here is an example of how the heart rate is currently stored for 2 consecutive measurements exactly 1 second apart. My suggestion is to change "startTimeNanos" and "endTimeNanos" to be the R-R interval instead of exactly 1 second.
{
"startTimeNanos": "1555034278000000000",
"endTimeNanos": "1555034278000000000",
"dataTypeName": "com.google.heart_rate.bpm",
"value": [
{
"fpVal": 85.0,
"mapVal": []
}
],
"modifiedTimeMillis": "1555041337275"
},
{
"startTimeNanos": "1555034279000000000",
"endTimeNanos": "1555034279000000000",
"dataTypeName": "com.google.heart_rate.bpm",
"value": [
{
"fpVal": 84.0,
"mapVal": []
}
],
"modifiedTimeMillis": "1555041337275"
},
hi there,
I'm not able to have data from the HR sensor when the app is in background (background mode in the app is ok and other sensors are working fine), do you have any insight/suggestion?thanks, Rd
{"hr": "157", "mt": 1557898344448}, {"hr": "157", "mt": 1557898345449}, {"hr": "157", "mt": 1557898346448}, {"hr": "157", "mt": 1557898347448}, {"hr": "-7", "mt": 1557898348448}, {"hr": "-14", "mt": 1557898349448}, {"hr": "-21", "mt": 1557898350448}, {"hr": "-28", "mt": 1557898351448}, {"hr": "-35", "mt": 1557898352448}, {"hr": "-42", "mt": 1557898353448}, {"hr": "-49", "mt": 1557898354448}, {"hr": "-56", "mt": 1557898355448}, {"hr": "-63", "mt": 1557898356448}, {"hr": "-70", "mt": 1557898357448}, {"hr": "-77", "mt": 1557898358448}, {"hr": "-84", "mt": 1557898359448}, {"hr": "-91", "mt": 1557898360448}, {"hr": "-98", "mt": 1557898361448}, {"hr": "-105", "mt": 1557898362448}, {"hr": "-112", "mt": 1557898363448}, {"hr": "-119", "mt": 1557898364448}, {"hr": "-126", "mt": 1557898365448}, {"hr": "-133", "mt": 1557898366448}, {"hr": "-140", "mt": 1557898367448}, {"hr": "-147", "mt": 1557898368448}, {"hr": "1", "mt": 1557898369448}, {"hr": "0", "mt": 1557898370448}, {"hr": "1", "mt": 1557898371448}, {"hr": "0", "mt": 1557898372448}, {"hr": "0", "mt": 1557898373448}, {"hr": "1", "mt": 1557898374448}, {"hr": "0", "mt": 1557898375448}, {"hr": "0", "mt": 1557898376448}, {"hr": "0", "mt": 1557898377448}, {"hr": "1", "mt": 1557898378448}, {"hr": "1", "mt": 1557898379448}, {"hr": "1", "mt": 1557898380448}, {"hr": "1", "mt": 1557898381447}, {"hr": "1", "mt": 1557898382448}, {"hr": "0", "mt": 1557898383448}, {"hr": "1", "mt": 1557898384448}, {"hr": "253", "mt": 1557898385448}, {"hr": "337", "mt": 1557898386448}, {"hr": "169", "mt": 1557898387448}, {"hr": "164", "mt": 1557898388448}, {"hr": "164", "mt": 1557898389448}, {"hr": "165", "mt": 1557898390448}, {"hr": "165", "mt": 1557898391448}, {"hr": "166", "mt": 1557898392448}, {"hr": "167"
{"hr": "0", "mt": 1561457454862}, {"hr": "0", "mt": 1561457455862}, {"hr": "0", "mt": 1561457456862}, {"hr": "0", "mt": 1561457457862}, {"hr": "1", "mt": 1561457458860}, {"hr": "1", "mt": 1561457459860}, {"hr": "0", "mt": 1561457460860}, {"hr": "1", "mt": 1561457461860}, {"hr": "1", "mt": 1561457462860}, {"hr": "193", "mt": 1561457463860}, {"hr": "205", "mt": 1561457464860}, {"hr": "217", "mt": 1561457465860}, {"hr": "229", "mt": 1561457466860}, {"hr": "241", "mt": 1561457467860}, {"hr": "253", "mt": 1561457468860}, {"hr": "265", "mt": 1561457469860}, {"hr": "277", "mt": 1561457470860}, {"hr": "289", "mt": 1561457471860}, {"hr": "301", "mt": 1561457472860}, {"hr": "313", "mt": 1561457473860}, {"hr": "325", "mt": 1561457474860}, {"hr": "337", "mt": 1561457475860}, {"hr": "349", "mt": 1561457476860}, {"hr": "181", "mt": 1561457477860}, {"hr": "181", "mt": 1561457478860}, {"hr": "179", "mt": 1561457479860}, {"hr": "179", "mt": 1561457480860}, {"hr": "178", "mt": 1561457481860}, {"hr": "179", "mt": 1561457482860}, {"hr": "179", "mt": 1561457483860}, {"hr": "180", "mt":
Is there any abnormality in heart rate obtained by SDK? From my current data, we can see that there will be some HR over 200, and some HR values are negative. What is the general cause of this? It seems that the data will continue to be superimposed or decreases, for example, the data of the instance is 12.
dyld: lazy symbol binding failed: can't resolve symbol _$S7RxSwift28SerialDispatchQueueSchedulerCMa in
This error is reported by XCode 10.1 above?
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
Hi,
I am using this command (after preliminaries) to request an ECG stream from a Polar H10.
char-write-req 0x0047 02000001820001010E00
The data is returned in a format like this, which seems to contain 73 samples representing microvolts: 00 a0 7d c8 a5 8c 44 52 08 .....
My problem is that I'm trying to detect the onset of heartbeats in real time. By the time 73 samples are received, the heartbeat has passed. Is it possible to receive this data more quickly, perhaps in smaller batches? I have tried changing the "resolution" and "sample rate" parameter but have not been able to make it work:
char-write-req 0x0047 02000001820001010C00
Thank you for your help.
Hi,
The data specification shows an ECG frame having 3 bytes. Does this correspond to one sample, or three samples? What is the encoding?
Page 5 indicates that ECG sample "68 00 00" corresponds to 104 microvolts. How is this encoded?
If this question is better asked in another forum, please let me know. Thank you.
My firmware is still version 1.1.8
I didn't receive update information in App Polar Beat in iPhone
What can I do?
When I connect device with method connectToDevice and its delegate method called once device is connected, that this in method deviceConnected(_ polarDeviceInfo: PolarDeviceInfo) I want to create some kind of flow for StopRecording, readList, Remove, StartRecording.
I'm unable to use framework in xcode 11.3 project due to the following warning:-
"Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.3 compiler:"
Running the example app (which by the way crashes on launch as it does not contain the correct privacy key for Bluetooth in its Info.plist) and connecting to an OH1 with it and tapping "toggle ppg" always fails with the following error:
polarBleSdkTestApp[5289:2696653] start ppg error: PolarBleSdk.NotificationNotEnabled
The same thing happens when you try to use the SDK to start PPG streaming as it always fails when invoking api.requestPpgSettings
.
There is also no documentation that I could find regarding the possible error codes returned by the SDK. It would be highly useful to document these.
hi, I just updated Xcode and I'm having this error message when trying to compile my project:
"Module compiled with Swift 4.2.1 cannot be imported by the Swift 5.0 compiler: /Users/roberdan/Desktop/MirrorHR2.0/PolarBleSdk.framework/Modules/PolarBleSdk.swiftmodule/x86_64.swiftmodule", any help?
thanks a lot, RD
If there can be a corresponding example
Hello
I am developing an application using "polar-sdk-android" now.
I have one question.
How many OH1 can connect up to Android 8.0 devices?
Now I can not test because I have only two.
I'm glad if you could tell me.
Thank you.
i have downloaded the android sample application example and tried connecting my H10 sensor to the application, but the application is not able to detect the device properly. can you please guide me on how do i use the example application to connect to the device effectively, can you guys respond to it quickly as i have project submission deadline coming up.
We are testing the ECG feature of H10. Then we found we should wait for the new firmware. So , when will the new one be ready?
And we find the version of firmware H10 is v1.1.8 now. When we open the Polar Beat, we didn't get the update information. So we cannot update to the latest version v2.1.9. Could recommend some solution for us?
We are in China.
Polar Beat v3.2.0 is downloaded from Apple App Store (China Area).
iOS is 12.2. iPhone 6
Thank you very much
I've downloaded the SDK and installed the iOS example.
I can succesfully 'manually' connect the H10 sensor with the app and retrieve HR readings after changing the deviceId.
However when pressing the "Toggle ECG" i always get the error:
start ecg error: PolarBleSdk.NotificationNotEnabled
By default the api is initialized with the option "Features.allFeatures.rawValue" (default) as well as the "Features.polarSensorStreaming.rawValue" setting.
From my understanding the ECG feature first needs to requested. Which is done by the pressing the toggle ecg button..
Not sure if it's relevant but after connecting these services logged
2019-12-04 14:46:02.920771+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: Heart Rate
2019-12-04 14:46:02.920968+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: 181C
2019-12-04 14:46:02.921222+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: Device Information
2019-12-04 14:46:02.921448+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: FEA5
2019-12-04 14:46:02.921852+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: Battery
2019-12-04 14:46:02.922402+0100 polarBleSdkTestApp[1301:331205] [BLE] service discovered: FEEE
What am i missing to get the ECG stream working?
hi there, I'm getting this message: "Failed to verify bitcode in PolarBleSdk.framework/PolarBleSdk" and haven't found details on how to handle it, do you have any? thanks,RD
Hello,
I would like to develop a dashboard (say to display on a TV) that show my current heart rate + calories burned in my session.
Hi, I was trying to archive my iOS project which uses the iOS version of the SDK and got the following linker error:
ld: bitcode bundle could not be generated because '/Users/...../project/polar-sdk-ios/PolarBleSdk.framework/PolarBleSdk' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build file '/Users/...../project/polar-sdk-ios/PolarBleSdk.framework/PolarBleSdk' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
My project builds and runs fine but archiving is a necessary step to publish to App Store. Is there anything I can do to correct this issue? If not, can @erkki-silvola rebuild the iOS framework with full bitcode? Thanks
Hello Polar Team,
I am simultaniously acquiring ECG Data via Stream and HR Data via notifications. I would like them to both use the same timeline (ie timestamp format). However, I cannot figure out the format of polarEcgData.timeStamp
. The documentation says it's nanoseconds, but nanoseconds starting from when?
Furthermore, is there any way of getting the time at which the HR data was generated on the sensor. I'd like to do something like PolarHrData.timeStamp
.
Thank you and best regards
Hello,
It is the same issue as exposed here : #34
This issue is closed, but the problem still exists.
We have made a workaround in our application, but it results in having 20s gaps in measurements, which is very annoying...
As much as I know that it is a firmware issue, is it possible to use this one as a follow-up for when it's fixed ?
If not, just close it ;-)
Thank you
I see there is a PolarBiozData datatype. Is the H10 capable of measuring bioimpedance?
Hi, I'm having trouble executing the "Prerequisite" listed on page 2 of the "Polar Measurement Data Specification for 3rd Party." I'm using gatttool, as shown below. But I cannot enable notification on the PMD Data MTU Characteristic (handle: 0x004a, uuid: fb005c82-02e7-f387-1cad-8acd2d8df0c8). Any help would be truly appreciated. Thanks.
$ gatttool -t random --device=DE:38:8F:EE:D0:08 --interactive --mtu=232
[DE:38:8F:EE:D0:08][LE]> connect
Attempting to connect to DE:38:8F:EE:D0:08
Connection successful
[DE:38:8F:EE:D0:08][LE]> char-write-req 0x0047 0200
Characteristic value was written successfully
[DE:38:8F:EE:D0:08][LE]> mtu 232
MTU was exchanged successfully: 232
[DE:38:8F:EE:D0:08][LE]> char-write-req 0x004a 0100
Error: Characteristic Write Request failed: Attribute can't be written
Are you also going to have support to pull real-time information from the watches
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.