Skip to main content

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: ApiClient constructor, IdentityStore, SdkDefaults, MockPositioningProvider, etc.
  • Breaking ConfigChange.Companion (empty companion) removed
  • Breaking PositioningProvider.applyZones removed from the public contract โ€” zones now arrive through apply(PositioningConfig(zones = โ€ฆ))
  • Breaking building(buildingId = โ€ฆ) โ†’ building(id = โ€ฆ) (parameter name only; positional calls are unchanged)
  • Breaking The first setFloorMap(floor) call without a building now raises SdkError.BuildingNotSet (E3001)
  • Breaking when expressions over enums such as SdkErrorCode need an else branch
  • 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 onFloorDetected and onEmit
  • If the engine stops it restarts automatically; on failure the session ends with onStopped(ENGINE_FAILED)
  • begin() without a floor no longer reports E3001 to the server
  • identify can now be called before initialize
  • Pause now persists across a trip to the background (same as iOS)
  • ApiError.message is now English plus the error code
  • The baseUrl passed to initialize is 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

  • when expressions over SdkErrorCode without else need a BLUETOOTH_OFF branch
  • 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.) and StateFlow
  • Added provider hooks (onFloorDetected, onEngineError, onZoneEvent, onLog)
  • startDetection() and stopDetection() can start just the engine first
  • kotlinx-coroutines-core (1.9.0) is now an api dependency
  • Unlike iOS, license is not exposed โ€” the SDK sets the engine license from the console value

0.0.4

  • Lowered the package minSdk from 37 to 26 (Android 8.0) โ€” you can restore your appโ€™s minSdk
  • Below Android 17 only positioning is disabled; the app keeps running (E2001)

0.0.3

  • Raised the package minSdk to 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 โ€” setFloorMap is optional, for zone events
  • Zone detection moved to the engine geofence โ€” console zone detection parameters are no longer used
  • Added BLUETOOTH_SCAN to the permission request
  • Added log codes E3007, E3008, E3009 and E4004; E4003 no longer occurs

0.0.2

  • Artifact coordinates changed to com.ones1ght.sdk:android โ€” only mavenCentral() is needed
  • R8/ProGuard release builds may fail โ€” 0.0.4 or later recommended
  • First Maven Central release; positioning engine AAR bundled
  • -sources.jar and -javadoc.jar published alongside

0.0.1

  • First public Android SDK โ€” same features and server contract as the iOS SDK (0.1.23)
  • Kotlin suspend and Java Callback<T> supported
  • Positioning works on Android 17 (API 37) and later with UWB DL-TDoA support
  • Unlike iOS, initialize takes a Context argument
  • Unlike iOS, the permission request takes an Activity argument