All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Ray-Ban Meta Optics glasses support.
- [Feature]
MockCameraKitcan use the phone camera (front and back) to simulate streaming withMockCameraKit.setCameraFeed(CameraFacing). - [Feature]
StreamConfiguration.compressVideoproperty to enable compressed HEVC video streaming, bypassing decoding. TheVideoFrame.isCompressedproperty indicates whether the frame data is compressed. - [Feature]
MockDeviceKitnow supports configuration to simulate device registration and permissions.MockDeviceKitConfigdata class to configureMockDeviceKitinitialization withinitiallyRegisteredandinitialPermissionsGrantedoptions.MockPermissionsinterface withsetandsetRequestResultto simulate permission states in tests.MockDeviceKitInterface.enable(config),disable,isEnabled, andpermissionsfor controlling MockDeviceKit lifecycle and permissions.
- [API] Session-based device management. Device interactions are now scoped to a
Sessionwith explicit lifecycle control.Wearables.createSession(deviceSelector): Creates aSessionfor a givenDeviceSelector.Sessionclass withstart,stop, state observation viagetState, and error observation viagetErrors.DeviceSessionStateenum with valuesIDLE,STARTING,PAUSED,STOPPING.SessionErrorenum with typed error cases.Capabilityinterface for extending sessions with additional features such as camera streaming.- Camera streaming exposed as a
Capability, as newStreaminterface. Access to it withSession.addStream(config)andSession.removeStream.
- [API]
MockDisplaylessGlassesServicesinterface grouping mock services, accessible viaMockDisplaylessGlasses.services.
- [API] Renamed
DeviceMetadatadata class toDevice, making it consistent with iOS. - [API]
DeviceSelector.activeDevicereturnsDeviceIdentifierdirectly.activeDeviceFlowfor the flow-based approach. - [API]
MockDeviceKitInterface.resetreplaced withenable/disablefor explicit lifecycle control. - Improved the Camera Access App MockDevice UI.
MockDevicebetter simulates state when a device is powered off or doffed.- Runtime crashes when building with R8/minify enabled.
ClassCastExceptionwhencom.meta.wearable.mwdat.APPLICATION_IDmanifest metadata is not parsed as aString.
- [API] Removed old session model API, including
DeviceSessionclass, in favor of the newSession. - [API]
MockDisplaylessGlasses.getCameraKithas been removed. The functionality is accessible throughMockDisplaylessGlasses.services. - Third-party library entries from
AndroidManifest.xml.
- [API] Sealed interface
CaptureErrorfor photo capture error handling with typed error cases:DeviceDisconnected,NotStreaming,CaptureInProgress, andCaptureFailed. - [API] Enum
LinkStaterepresenting device connectivity state with valuesCONNECTING,CONNECTED, andDISCONNECTED. Brings parity with iOS SDK.
- [API]
StreamSession.capturePhoto()now returnsDatResult<PhotoData, CaptureError>instead ofResult<PhotoData>. - [API]
Device.linkState: Replaces booleanavailableproperty withLinkStateenum for richer connectivity state information. - Improved Android video decoding and playback performance.
- [CameraAccess] Removed timer functionality.
- Fixed R8 build errors when minify is enabled.
- Improved
DeviceSessionaccuracy. - Fixed duplicate class errors when building with React Native.
- Improved audio and video packet deserialization.
- High resolution (720x1280) video can be requested.
Note: This version requires updated configuration values from Wearables Developer Center for release channel functionality.
- Meta Ray-Ban Display glasses support.
- [API]
AutoDeviceSelectorincludes newfilterproperty. Defaults to filter out incompatible devices. - [API]
presentationTimeUsproperty toVideoFrame.
- The registration dialog now opens in place, instead of jumping to Meta AI app.
- [API]
Wearables.startRegistrationandWearables.startUnregistrationaccept an Activity instead of a Context.
- Removed timer functionality in Camera Access app.
- The correct state is now reported after unregistering the application.
- Improved stream latency, which was degrading over time.
- [API] Result-like object (
DatResult) used to returnErrorfrom some methods. - [API]
ALREADY_INITIALIZEDerror toWearablesError.
- [API] Permission functions now return
DatResult<PermissionStatus, PermissionError>instead ofPermissionStatus. - [API] In
PermissionError,COMPANION_APP_NOT_INSTALLEDhas been renamed toMETA_AI_NOT_INSTALLED. - The Camera Access app streaming UX reflects device availability.
- The Camera Access app shows errors when incompatible glasses are found.
- Fixed orientation of images captured by
MockDevice. - Streaming status becomes
stoppedwhen permission is not granted. - Fixed invalidation of flow from
Wearables.getDeviceSessionStateafter streaming stops. - Fixed UI issues in the Camera Access app.
- [API]
Errordata class fromPermissionStatus.
- The Camera Access app now correctly processes orientation metadata in HEIC images.
- [API] Base classes for errors (
DatError) and exceptions (DatException) of the SDK. - [API] New
WearablesErrorandWearablesExceptiontypes. - [API] Configurable frame rate for the video stream. Valid values include 30, 24, 15, 7 and 2 fps.
- [API]
AutoDeviceSelectorconstructor now accepts a device ranking function to influence device selection. - [API] A description (string) to enum types.
- [API]
DeviceMetadataincludes new fields for compatibility and firmware info versions.
- [API] The SDK now splits into components for independent project inclusion.
- [API] Calling any
Wearablesfunction without initialization throws a WearablesException. - [API] Permission API updated for better consistency with iOS:
checkPermissionrenamed tocheckPermissionStatus.AskPermissionContractrenamed toRequestpermissionContract.PermissionGrantStatereplaced byPermissionStatus, with valuesGRANTEDandDENIED.- Updated the set of values of
PermissionError.
- [API] Permission requests now return an
Errorinstead of throwing exceptions. - [API]
RegistrationErrornow holds different errors, aligning more closely with the iOS SDK. - [API]
DeviceSelector's select method replaced by an active device Flow. - [API] Renamed
DeviceTypeenum values. - [API] Replaced
MockDeviceUUIDwithDeviceIdentifier. AutoDeviceSelectornow selects or drops devices based on connectivity state.- Adaptive Bit Rate (streaming) updated to use provided resolution and frame rate hints.
- Camera Access app redesigned and updated to the current SDK version.
- [API]
PermissionException. - [API]
onDeviceNamemethod onPermission.
- Sessions now close properly when the connection with the glasses is lost.
- The requested video quality is now correctly applied to the stream.
- First version of the Wearables Device Access Toolkit for Android.