4.3.132
- Samsung Health Data Integration - Major Expansion:
- Added support for reading and pushing the following data types from Samsung Health:
- Workouts (exercises)
- Sleep data
- Body composition data (weight, height, BMI, body fat)
- User profile data (weight, height, birth date, gender)
- Blood pressure measurements
- Skin temperature measurements
- Heart rate measurements
- Blood oxygen saturation (SpO2) measurements
- Body temperature measurements
- More efficient Samsung Health Data pushes
- Large Samsung Health Data pushes are now automatically split into smaller chunks for reliable delivery
- Added support for reading and pushing the following data types from Samsung Health:
- Health Connect Improvements:
- Large Health Connect pushes are now automatically split into smaller chunks for reliable delivery
4.3.122
-
Added Nutrition Facts Label Recognition for extracting nutritional information from label photos.
For more information please visit our documentation.
recognizeNutritionFactsLabel(imageBase64, config)- Analyze a nutrition facts label image and extract nutritional datarecognizeNutritionFactsLabel(image: Bitmap, config)- Convenience method that accepts Bitmap
-
Added methods for manual nutrition record management:
createNutritionRecord(nutritionRecord)- Insert a new nutrition record with custom datareplaceNutritionRecord(nutritionRecord)- Replace an existing nutrition record completely
-
Added
NutritionRecordUtilsfor creating and manipulating nutrition records:NutritionRecordUtils.create(...)- Create a new nutrition record with specified propertiesNutritionRecord.withIngredient(ingredient)- Add an ingredient to a recordNutritionRecord.withoutIngredient(ingredient)- Remove an ingredient from a recordNutritionRecord.withServingSize(servingSize, unit)- Update serving size and unit
-
Added
NutritionRecordIngredientUtilsfor creating and manipulating ingredients:NutritionRecordIngredientUtils.create(...)- Create a new nutrition record ingredientNutritionRecordIngredient.withNutritionalField(field, value)- Set a nutritional field valueNutritionRecordIngredient.withoutNutritionalField(field)- Remove a nutritional fieldNutritionRecordIngredient.withScaledServingSize(newServingSize)- Scale serving size and nutritional values proportionally
-
Nutrition AI methods now return
NutritionRecordAnalysisResultinstead ofNutritionRecord. The newNutritionRecordAnalysisResultcontains:recordId- The record IDstatus- Processing status (pending, processing, completed, failed, updated)failureReason- Reason for failure (if status is failed)uploadedAt- Upload timestampnutritionRecord- The actual nutrition data (nullable, only present when status is completed/updated) Affected methods:analyzeNutrition(...)- Now returnsNutritionRecordAnalysisResultgetNutritionRecords(from, to)- Now returnsList<NutritionRecordAnalysisResult>getNutritionRecord(id)- Now returnsNutritionRecordAnalysisResult?updateNutritionRecordServingSize(id, servingSize)- Now returnsNutritionRecordAnalysisResultcreateNutritionRecord(nutritionRecord)- Now returnsNutritionRecordAnalysisResultreplaceNutritionRecord(nutritionRecord)- Now returnsNutritionRecordAnalysisResultAccess the nutrition data via thenutritionRecordproperty:
-
NutritionRecordno longer containsstatusandfailureReasonproperties. These properties have been moved toNutritionRecordAnalysisResult.
4.3.112
- Added Nutrition AI features for analyzing food images. For more information
please visit our documentation.
analyzeNutrition(imageBase64, consumedAt, config)- Analyze food image synchronously and wait for resultsanalyzeNutrition(image: Bitmap, consumedAt, config)- Convenience method that accepts BitmapsubmitNutritionForAnalysis(imageBase64, consumedAt, config)- Analyze food image asynchronously, returns record IDsubmitNutritionForAnalysis(image: Bitmap, consumedAt, config)- Convenience method that accepts BitmapgetNutritionRecords(from, to)- Retrieve nutrition records for a date rangegetNutritionRecord(id)- Get a specific nutrition record by IDdeleteNutritionRecord(id)- Delete a nutrition recordupdateNutritionRecordServingSize(id, servingSize)- Update serving size for a nutrition record
- Added new
Provider:- LUNA
- Added new
ProviderSourcetypes:- FITBIT_SKIN_TEMPERATURE_SUMMARY
- GARMIN_WELLNESS_SKIN_TEMPERATURE_SUMMARY
- LUNA_SLEEP
- Removed
ProviderSourcetypes:- FITBIT_USER_ACTIVITIES_LIST
- FITBIT_USER_ACTIVITIES_DATE
- FITBIT_USER_ACTIVITIES_HEART_DATE
- FITBIT_USER_ACTIVITIES_HEART_DATE_INTERDAY
- WITHINGS_MEASURE_GET_WORKOUTS
- WITHINGS_MEASURE_GET_ACTIVITY
- WITHINGS_MEASURE_GET_MEAS
- Removed
ActivityTag:- ON_BICYCLE
- Removed
Provider:- WAHOO
4.3.102
- Enable Health Connect integration in admin console right after enabling integration
- Enable Samsung Health Data integration in admin console right after enabling integration
- 🔴 Breaking Change:
enableHealthConnectIntegration()is now a suspend function. Update your code to call it from a coroutine scope. - 🔴 Breaking Change:
enableSamsungHealthDataIntegration()is now a suspend function. Update your code to call it from a coroutine scope.
4.3.92
- Updated Health connect to
1.1.0-rc03 - Updated compileSdk to
36 - Updated gradle to
8.13 - Removed
providerUserIdentifierfromIntegrationInitConfig - Added ability to read mindfulness activities:
- Added new
ActivityTagtypes:- MINDFULNESS
- Added new
ActivityTypetypes:- ECG_MEASUREMENT
- TRIATHLON
- BIATHLON
- DUATHLON
- ROLLERBLADING
- SKATEBOARDING
- SKATING
- CALISTHENICS
- WEIGHT_LIFTING
- CANOEING
- FLOORBALL
- JIU_JITSU
- DIVING
- ORIENTEERING
- BOOTCAMP
- MOTORSPORTS
- HORSERIDING
- PARAGLIDING
- MULTISPORT
- BLOOD_TEST
- MINDFULNESS_SESSION
- Added new
ProviderSourcetypes:- APPLE_HEALTHKIT_MINDFULNESS
- HEALTH_CONNECT_MINDFULNESS_SESSION
- Added new
ActivityCategorytype:- MINDFULNESS
- Added new
HealthConnectFeature:- FEATURE_MINDFULNESS_SESSION
- Added new
MetricType:- HEARTRATE_RESTING_MIN
- HEARTRATE_RESTING_MAX
- CADENCE
- CADENCE_MIN
- CADENCE_MAX
- PACE
- AIR_TEMPERATURE
- BODY_TEMPERATURE_MAX
- BODY_TEMPERATURE_MIN
- BASAL_BODY_TEMPERATURE
- BASAL_BODY_TEMPERATURE_MAX
- BASAL_BODY_TEMPERATURE_MIN
- SKIN_TEMPERATURE_MAX
- SKIN_TEMPERATURE_MIN
- SLEEP_SKIN_TEMPERATURE_DEVIATION
- Added new
StatisticsType:- SLEEP_SKIN_TEMPERATURE_DEVIATION
- HRV_RMSSD
- HRV_SDNN
4.3.82
- Workaround for the Android 15 bug to make background delivery more resilient
- Implemented more efficient pushes to Spike API
4.3.72
- Allow reading
SPO2andSWIMMING_LENGTHSingetActivities - Allow reading
SPO2andSKIN_TEMPERATUREingetSleeps
4.3.62
- Optimized background delivery
4.3.52
- Added
Provider.COROS - Updated
ProviderSourceenum - Added new Statistic types:
- STRESS_SCORE
- RECOVERY_SCORE
- ACTIVITY_SCORE
- Added new Metric types for
getSleeprequest:- SLEEP_DURATION
- SLEEP_DURATION_AWAKE
- SLEEP_DURATION_DEEP
- SLEEP_DURATION_LIGHT
- SLEEP_DURATION_NAP
- SLEEP_DURATION_REM
- SLEEP_EFFICIENCY
- SLEEP_INTERRUPTIONS
- SLEEP_LATENCY
- SLEEP_SCORE
4.3.42
- Added new
MetricType.GLUCOSEavailable in both Health Connect and Samsung Health - Updated Samsung Health Data SDK to version 1.0.0 (available only on Android 29+)
4.3.32
- Switched to protobuf java-lite 3.25.5 for better compatibility with firebase
- The old SpikeSDK API has been deprecated
4.3.22
- Added DISTANCE_SWIMMING into the list of metrics available in activities
- Added new providers: DEXCOM, FREESTYLE_LIBRE, HUAWEI, STRAVA
4.3.12
- Added new statistics for Health Connect:
- HEARTRATE
- HEARTRATE_MAX
- HEARTRATE_MIN
- Added new metrics for Health Connect:
- HEARTRATE
- HEARTRATE_MAX
- HEARTRATE_MIN
- Improved transport protocol for even faster requests to Spike API
- Added Samsung Health Integration for:
StatisticTypes:- STEPS
- DISTANCE_TOTAL
- CALORIES_BURNED_ACTIVE
- CALORIES_BURNED_TOTAL
- CALORIES_BURNED_BASAL
- Added new
Provider:- SAMSUNG_HEALTH_DATA
- Added new
ProviderSource:- SAMSUNG_HEALTH_DATA_AGGREGATION
- Renamed
MetricTypes:- SLEEP_BREATHING_RATE to BREATHING_RATE
- SLEEP_BREATHING_RATE_MIN to BREATHING_RATE_MIN
- SLEEP_BREATHING_RATE_MAX to BREATHING_RATE_MAX
4.2.82
- Added
IntegrationInitConfigUtilsfor usage in Flutter and React Native libraries - Additional check in
getIntegrationInitUrlfor email in ultrahuman integration
4.2.72
- Added new
MetricTypes:- BODY_FAT
- BODY_FAT_MAX
- BODY_FAT_MIN
- BODY_BONE_MASS
- BODY_MASS_INDEX
- BLOOD_PRESSURE_SYSTOLIC
- BLOOD_PRESSURE_SYSTOLIC_MIN
- BLOOD_PRESSURE_SYSTOLIC_MAX
- BLOOD_PRESSURE_DIASTOLIC
- BLOOD_PRESSURE_DIASTOLIC_MIN
- BLOOD_PRESSURE_DIASTOLIC_MAX
- Added new fields in
UserProperties:- BODY_FAT
- BODY_BONE_MASS
- BODY_MASS_INDEX
- Updated
getIntegrationInitUrl. Now it acceptsIntegrationInitConfigconfig object where you can pass:redirectUri: will override the one set in admin consolestate: when the authorization server redirects back to the client, it includes thestatevalue originally sentproviderUserIdentifier: at the moment used (and required) only when integrating with ultrahuman
- Added new provider:
ultrahumanWhen integrating with Ultrahuman, you have to provide Ultrahuman user email inIntegrationInitConfig.providerUserIdentifier. Example:
4.2.62
- Added consumer proguard rules
4.2.52
- New statistics:
- HEARTRATE_RESTING
- SLEEP_DURATION_TOTAL
- New statistics (only from non-HealthConnect providers):
- HEARTRATE
- HEARTRATE_MIN
- HEARTRATE_MAX
- Metric types updates
- Better proguard settings for uniqueness of generated class names
- Fix for statistics in different time zones
4.2.42
- New metrics:
- SPO2
- BODY_TEMPERATURE
- SKIN_TEMPERATURE
- SLEEP_BREATHING_RATE (available only on getSleep())
- SLEEP_BREATHING_RATE_MIN (available only on getSleep())
- SLEEP_BREATHING_RATE_MAX (available only on getSleep())
- SLEEP_BREATHING_RATE_AVG (available only on getSleep())
- Added sleepScore property in the Record type
4.2.32
- New
getUserPropertiesmethod for reading: weight, height, timezone from Health Connect - New
getUserPropertiesmethod for reading: birthdate, gender from other providers - New metric:
VO2MAXavailable ingetRecordsandgetActivities - New statistic:
SLEEP_SCORE
4.2.22
- Implemented better API error handling
- Exposed
SpikeHMACSignatureGeneratorfor debugging purposes
4.2.12
-
🔴 Breaking Change: Update to
SpikeConnectionAPIv3.createConnection. The methodSpikeConnectionAPIv3.createConnection(context:, appId:, authToken:, customerEndUserId:)has been updated to:SpikeConnectionAPIv3.createConnection(context:, applicationId:, signature:, endUserId:) -
The
applicationIdparameter must now be provided as anInt. -
The
signatureparameter now requires anHMAC-SHA256signed user ID. -
⚠️ Security Notice:
- Do not store your HMAC signing key within the application itself, as this poses a security risk.
- Instead, generate and provide the signature from your backend.
-
Legacy Support: For development purposes only, the previous connection flow remains available under the renamed method:
SpikeConnectionAPIv3.createConnectionLegacy(context:, appId:, authToken:, customerEndUserId:)
4.1.12
- Added background delivery (see documentation for more information)
- Health Connect library updated to 1.1.0-alpha11
- Compile SDK and target SDK updated to 35
- Updated kotlin version to 1.9.25
- Updated other dependencies
- Added log callback
- Updated gradle to 8.8.0
4.0.22
RenamedgetProviderIntegrationUrl to getIntegrationInitUrl to be on par with other platforms
4.0.12
Completely new SDK! Please see our official documentation for more details and usage instructions3.1.6
- Updated steps intraday to better check for manual entries
- Added permissions specific to steps_intraday
3.1.5
- Implemented checking for permissions before reading additional sleep data
3.1.4
- Added metadata in Calories raw data
3.1.3
- Reverted 3.1.2 changes
3.1.2
- Added third party integration initialization
3.1.1
- Removed unneeded settings from android manifest
3.1.0
- Better way to authenticate with API
- Added saved session validation before the connection is established
- Added customer user id validation.
3.0.19
- Added safeguard for to handle multiple sources of sleep data and avoid illogical values
3.0.18
- Added new logic for detecting changes in intraday_steps metadata
3.0.17
- Removed the limitation that prevented values from being sent when the requested period is more than a day
- Implemented calculation of time by sleep stage in sleep data
3.0.16
- Updated metadata info in intraday_steps to have all values as single objects
- Refactored how the decision whether to send metadata with intraday_steps is made
3.0.15
- Added all metadata info to each intraday_steps data object
3.0.14
- Fixed sleep time counting by different stages
3.0.13
- Added a source field to the sleep data class
3.0.11
- Fixed data type StepsIntraday handling
3.0.9
- Added a new Spike data type —
IntradaySteps
3.0.8
- Updated the package checker function to avoid unnecessary checks for Android 14 and up versions.
3.0.7
- Can get permission contract before SpikeConnection is created
3.0.6
- Moved permission checking before data extraction to the SDK connection layer
3.0.5
- Fixed extraction of heart data
3.0.4
- Added support for Android 14
- Updated Readme to match the Android 14 implementation process
- Fixed some issues with data requesting for a specified date range
3.0.2:
- Activity summary and activity stream can be called without granting all their permissions. Returned data depends on which permissions were provided.
- Permission requests are divided by datatypes.
- Works up to Android 13.
