4.5.22
- Added
backfillon the v3 connection to upload historical health data for a chosen number of days. Call it after you have enabled Health Connect and/or Samsung Health Data integration (enableHealthConnectIntegration(),enableSamsungHealthDataIntegration(...)) and granted the permissions you need via the respective permission managers; then pass the statistics, metrics, activities, and sleep configurations you want to fill in. Only the categories you provide are pushed. - Added
requestPermissionsFromSamsungHealthDataAndBackfill— a convenience method that enables Samsung Health Data integration, requests permissions, and immediately starts backfilling historical data. Today and yesterday are pushed before the method returns so you can display data right away; older days continue uploading in the background. - Permission
PERMISSION_READ_HEALTH_DATA_HISTORYis now added automatically to the list if required according to configuration in admin console.
4.5.12
- Improved handling of deleted integrations — background delivery is now automatically disabled when the integration no longer exists
- Improved error handling for API responses
- Added
RecordConfigfor configuring records queries:includeSamples- whether to include samples (raw data points) in the response
- Updated
getRecordsto accept an optionalRecordConfigparameter:
4.4.12
- Updated
Unitenum with new values:- Added:
miles,mPerSec,fahrenheit,ms,seconds,degrees,sleepStage,secPerM,rpm,spm,breathsPerMin,g,lbs,st,mmHg,mLPerKgPerMin,uV,mgPerDl,w - Removed:
kmh,kmPerMin
- Added:
- Improved data communication with API
- Enhanced the
getSleependpoint. Important:- Dates provided are now interpreted as dates only; the time component is ignored when querying the API.
- The primary night sleep period is associated with the calendar date on which it ends.
4.3.142
- Internal improvements and bug fixes.
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.
