0.0.9
- Fixed positioning not starting on some devices such as the Galaxy S25+ (repeated
E4001)
0.0.8
- Narrowed the SDKโs Gson R8 rules to the SDK itself โ add rules for your appโs Gson models in the app
- Fixed requests sent during a dropped connection being re-sent, duplicating events, coordinates and profiles
0.0.7
- Breaking Internal types are no longer public:
ApiClientconstructor,IdentityStore,SdkDefaults,MockPositioningProvider, etc. - Breaking
ConfigChange.Companion(empty companion) removed - Breaking
PositioningProvider.applyZonesremoved from the public contract โ zones now arrive throughapply(PositioningConfig(zones = โฆ)) - Breaking
building(buildingId = โฆ)โbuilding(id = โฆ)(parameter name only; positional calls are unchanged) - Breaking The first
setFloorMap(floor)call without a building now raisesSdkError.BuildingNotSet(E3001) - Breaking
whenexpressions over enums such asSdkErrorCodeneed anelsebranch permissions(activity)โrequestPermission(activity)getProfile()โfetchProfile()putProfile()โreplaceProfile()send()โuploadPendingPositions()empty()โdiscardPendingPositions()ApiClient.DEFAULT_BASE_URLโOneS1ght.DEFAULT_BASE_URL- Old names keep working as
@Deprecated; see the SDK CHANGELOG 0.0.7 for the full list - Added
FloorSession.onStoppedโ delivers why the session stopped (ENDEDยทENGINE_FAILED) - Added
FloorSession.onFloorDetectedโ delivers the floor ID the engine found - Custom providers now support zone callbacks through
onFloorDetectedandonEmit - If the engine stops it restarts automatically; on failure the session ends with
onStopped(ENGINE_FAILED) begin()without a floor no longer reportsE3001to the serveridentifycan now be called beforeinitialize- Pause now persists across a trip to the background (same as iOS)
ApiError.messageis now English plus the error code- The
baseUrlpassed toinitializeis now used for space lookups too - Fixed one broken item failing the whole list in a response
- Fixed dwell time being reset on
refreshZones() - Fixed a crash when
empty()was called during a coordinate upload - Fixed floor lookups using the old building after
reset()
0.0.6
whenexpressions overSdkErrorCodewithoutelseneed aBLUETOOTH_OFFbranch- Bluetooth off is now logged as
E2004, separate from permission denied (E2003) (same as iOS)
0.0.5
- Apps can now create the positioning provider directly with
UwbPositioningProvider(context) - Added
UwbPositioningProvider.isSupported(context)to check whether the device can position - Added observable provider state (
phase,latestPosition,detectedFloorId, etc.) andStateFlow - Added provider hooks (
onFloorDetected,onEngineError,onZoneEvent,onLog) startDetection()andstopDetection()can start just the engine firstkotlinx-coroutines-core(1.9.0) is now an api dependency- Unlike iOS,
licenseis not exposed โ the SDK sets the engine license from the console value
0.0.4
- Lowered the package
minSdkfrom 37 to 26 (Android 8.0) โ you can restore your appโsminSdk - Below Android 17 only positioning is disabled; the app keeps running (
E2001)
0.0.3
- Raised the package
minSdkto 37 โ 0.0.4 or later recommended - Replaced the positioning engine with the unified engine used by iOS (0.1.23)
- The engine finds the floor by itself over BLE โ
setFloorMapis optional, for zone events - Zone detection moved to the engine geofence โ console zone detection parameters are no longer used
- Added
BLUETOOTH_SCANto the permission request - Added log codes
E3007,E3008,E3009andE4004;E4003no longer occurs
0.0.2
- Artifact coordinates changed to
com.ones1ght.sdk:androidโ onlymavenCentral()is needed - R8/ProGuard release builds may fail โ 0.0.4 or later recommended
- First Maven Central release; positioning engine AAR bundled
-sources.jarand-javadoc.jarpublished alongside
0.0.1
- First public Android SDK โ same features and server contract as the iOS SDK (0.1.23)
- Kotlin
suspendand JavaCallback<T>supported - Positioning works on Android 17 (API 37) and later with UWB DL-TDoA support
- Unlike iOS,
initializetakes aContextargument - Unlike iOS, the permission request takes an
Activityargument