Releases: livekit/client-sdk-android
v2.4.0
What's Changed
CameraX support for LiveKit SDK
In 2.4.0 we've introduced CameraX support into the LiveKit SDK, under a separate artifact io.livekit:livekit-android-camerax. This library will allow for better control over the camera (such as zoom and torch control) and support more use cases overall in the future. Shoutouts to the team at eBay for supplying us with the CameraX implementation!
To get started, check out the instructions here!
Changelog
- Update protocols and dependencies by @davidliu in #417
- Render video directly from capturer for local video tracks by @davidliu in #419
- Allow setting of degradation preference by @davidliu in #420
- CameraX Sample integration by @jfilo-ebay in #421
- CameraX zoom feature and cleanup by @davidliu in #422
- More documentation for CameraX by @davidliu in #423
- Only use camerax provider if lifecycle is not destroyed by @davidliu in #424
- Cache target zoom value for more accuracy while zooming by @davidliu in #426
- Add documentation for various undocumented methods by @davidliu in #427
Full Changelog: v2.3.0...v2.4.0
v2.3.0
What's Changed
- Add Room.setRoomOptions by @davidliu in #399
- Update webrtc to 114.5735.09 by @davidliu in #404
- Set access modifier by @newjins-papa in #402
- Add camera/mic service types to sample foreground service by @davidliu in #405
- Add some audio convenience functions by @davidliu in #408
- Add RoomEvent for local participant unpublish by @davidliu in #407
- Add capture options and video processor for screencast tracks by @davidliu in #410
- Update video capture defaults to 720p by @davidliu in #411
- Fix ConcurrentModificationException in RemoteVideoTrack by @davidliu in #413
Full Changelog: v2.2.0...v2.3.0
v2.2.0
What's Changed
LiveKit Android Mocks for Testing Library
The mocks we use for testing have been published under the artifact io.livekit:livekit-android-test. These mocks allow for offline JVM unit testing, without the need for instrumented testing on an Android device. This is useful for unit testing your own code in a controlled environment.
For examples, see the existing mocked end-to-end tests within the livekit-android-test folder.
Full Changelog: v2.1.1...v2.2.0
v2.1.1
What's Changed
- add foregroundServiceType for ForegroundService by @jossephus in #392
- Add FOREGROUND_SERVICE_MEDIA_PROJECTION permission needed for android 14 screen capture by @davidliu in #393
New Contributors
- @jossephus made their first contribution in #392
Full Changelog: v2.1.0...v2.1.1
v2.1.0
What's Changed
- Fix memory leak caused by disconnecting before connect finished by @davidliu in #386
- feat: add external audio processing api. by @cloudwebrtc in #319
- Fix network request leak on pre-8.1 devices by @davidliu in #389
- Support authenticating audio processors by @davidliu in #390
- Sanitize response handling and clear out queued requests on disconnect by @davidliu in #387
Full Changelog: v2.0.1...v2.1.0
v2.0.1
What's Changed
- Selfie ML video processing examples by @davidliu in #378
- CommunicationWorkaround crash fix and global references leak by @Antonito in #379
- Allow injection of PeerConnectionFactory.Options by @davidliu in #382
- State checking and sync for comm workaround track by @davidliu in #383
New Contributors
Full Changelog: v2.0.0...v2.0.1
v1.6.5
v2.0.0
Breaking Changes
There are several breaking changes between v1 and v2. Please consult our migration guide when upgrading to v2.
Room.remoteParticipantsis now keyed by participant identity.Participant.tracksand other similar methods/members are renamed toParticipant.trackPublications.LocalParticipant.publishDatanow uses participant identity as destinations instead of participant sids.Room.sidmay be null after connection. Please use the suspend functionRoom.getSid()to get the actual value when populated.io.livekit.android.room.track.VideoQualityhas been added to omit certain values that didn't make sense for users.
Removal of deprecated APIs
LiveKit.connect- Please useLiveKit.createandRoom.connectinstead.Room.listener- Please useRoom.eventsinstead.Participant.listener- Please useParticipant.eventsinstead.- Certain
VideoPreset169andVideoPreset43members likeVGAandHDhave been removed. DeviceManager- This class was previously unused and didn't have any effect within the SDK.
Renaming of org.webrtc package to livekit.org.webrtc
We've renamed the org.webrtc package we use internally to livekit.org.webrtc, in order to avoid any collision
with other WebRTC implementations. If your code references this package, you'll need to change the import like so:
// v1
import org.webrtc.*
// v2
import livekit.org.webrtc.*Moved composables into a separate package
Composables such as VideoRenderer have been moved into a separate package, components-android. Previously
the SDK depended on Jetpack Compose, causing View-based apps to depend on an unnecessary package. These composables
have been split off into a separate package so only Compose-based apps will need to depend on it.
To migrate, add in your build.gradle:
dependencies {
implementation "io.livekit:livekit-android-compose-components:1.0.0"
}The VideoRenderer composable has also been renamed to VideoTrackView to maintain parity with other platforms.
Participant.Sid and Identity inline value classes
To avoid confusion between participant sid and identity which shared the String type, we've added the
Participant.Sid and Participant.Identity inline value classes. This will prevent inadvertantly using
one in place of the other.
Other changes
- Don't emit RoomEvent.Reconnecting for resumes by @davidliu in (#371)
- Support sync stream id by @davidliu in a42a47a
- Stream ids allow for better synchronization among tracks with the same stream id. By default, the microphone and camera share a stream id.
Full Changelog: v1.6.0...v2.0.0
v1.6.4
v1.6.3
What's Changed
We've identified an unexpected behavior on Android 11+ devices that may reset AudioManager.mode to normal. This may unexpectedly result in being unable to change the volume properly. To workaround this, we now play a silent audio track while no remote audio tracks are playing. If you would like to disable the workaround, you can disable it when creating the Room object:
LiveKit.create(
appContext = context,
overrides = LiveKitOverrides(
audioOptions = AudioOptions(disableCommunicationModeWorkaround = false)
)
)
Note that this workaround is only used for Android 11+ and when the audio mode is set to MODE_IN_COMMUNICATION.
Full Changelog: v1.6.2...v1.6.3