Skip to main content

Android SDK Releases

1.2.0.208

Dependency coords unchanged (libwebrtc:M134, autobahn-android-legacy:20.2.1). Section written to match the existing doc style:

Photo-mode video quality boost, faster rear-camera autofocus, Samsung Bluetooth crash fix, and camera orientation fixes.

To use this version, add the following Maven coordinates to your app-level build.gradle or build.gradle.kts file.

Kotlin DSL (build.gradle.kts):

dependencies {
    implementation("group.ccr.ecv:ecv-175-sdk:1.2.0.208")
    implementation("org.webrtc:libwebrtc:M134")
    implementation("group.ccr.ecv.external:autobahn-android-legacy:20.2.1")
}

Groovy (build.gradle):

dependencies {
    implementation 'group.ccr.ecv:ecv-175-sdk:1.2.0.208'
    implementation 'org.webrtc:libwebrtc:M134'
    implementation 'group.ccr.ecv.external:autobahn-android-legacy:20.2.1'
}

The libwebrtc and autobahn-android-legacy versions are unchanged from 1.0.18.125. If you are upgrading from that version, only the ecv-175-sdk line needs to change.

⚠️ Required before upgrading

1. Declare and request BLUETOOTH_CONNECT (Android 12 / API 31+)

If your app supports Bluetooth headsets during calls, add to your AndroidManifest.xml:

<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

…and request it at runtime before starting a call. Without it, calls still work — audio simply routes to the earpiece/speaker instead of the headset. Previously the SDK attempted Bluetooth access without this permission, which caused crashes on some Samsung devices.

2. Higher camera capture resolution

The camera is now opened at up to 1080×1440 so photo mode can switch instantly. The stream transmitted during normal call time is unchanged — still your configured videoWidth × videoHeight. Expect slightly higher device power and memory use. Set photoModeVideoBoostEnabled = false to restore the previous behavior.

New — Photo-mode video quality boost

When the agent starts photo capture, the SDK automatically raises the outgoing video resolution and drops back when capture ends. No call interruption, no reconnection. Enabled by default — no code changes required.

New optional ConnectParameters fields:

val params = ConnectParameters(
    // ... your existing parameters ...
    photoModeVideoBoostEnabled = true,   // false = pre-1.2.0 behavior
    photoModeVideoWidth = 1080,
    photoModeVideoHeight = 1440,
    photoModeVideoMaxBitrate = 0,        // 0 = leave bitrate unchanged during photo mode
    photoModeMaintainResolution = false, // true = drop framerate before resolution on weak networks
    photoModeMinFps = 10,                //   ...floor: give up below this framerate
    photoModeRecoverFps = 25             //   ...and resume once it recovers
)
Parameter Default Description
photoModeVideoBoostEnabled true Master switch for the whole feature
photoModeVideoWidth / photoModeVideoHeight 1080 / 1440 Resolution sent during photo capture
photoModeVideoMaxBitrate 0 Bitrate cap (kbps) during photo mode; 0 leaves it untouched
photoModeMaintainResolution false Keep resolution and lower framerate on poor connections
photoModeMinFps 10 Framerate floor before resolution is allowed to drop
photoModeRecoverFps 25 Framerate at which resolution-maintaining resumes

Aspect ratio: if you override photoModeVideoWidth/photoModeVideoHeight, keep the same aspect ratio as videoWidth/videoHeight (both default to 3:4). A mismatched ratio will fail call recording.

Improvements

  • Faster rear-camera autofocus — the rear camera now uses a photo-optimized autofocus mode. Documents and ID cards held close to the lens lock focus noticeably faster.
  • Faster reconnection after network blips — the first signaling reconnect attempt now fires almost immediately (100 ms instead of 1 s), so brief interruptions rejoin the existing call instead of dropping it.
  • Improved diagnostics — the SDK logs which camera API it selected and why, plus camera orientation details. Please include your logs when reporting a camera-related issue.

Fixes

  • Fixed a crash on some Samsung devices when the SDK inspected Bluetooth audio devices during a call. Bluetooth handling is now fully fault-tolerant.
  • Fixed upside-down video on certain devices using the legacy camera API.

Compatibility

No changes to the public call API. Existing integrations compile and run unchanged once the BLUETOOTH_CONNECT item above is addressed.

What's New

Sharper photos during agent capture

When the agent starts photo capture, the SDK now automatically raises the outgoing video to a higher resolution (1080×1440 by default) and drops back to normal call resolution when capture ends. The switch is instant — no call interruption, no camera restart, no reconnection.

This is on by default. No code changes needed to benefit from it.

Tunable via ConnectParameters if you need different behavior:

val params = ConnectParameters(
    // ...
    photoModeVideoBoostEnabled = true,   // set false for previous behavior
    photoModeVideoWidth = 1080,          // photo-mode resolution
    photoModeVideoHeight = 1440,         //   must keep same aspect ratio as videoWidth/videoHeight
    photoModeVideoMaxBitrate = 0,        // 0 = leave bitrate unchanged during photo mode
    photoModeMaintainResolution = false, // true = prefer dropping framerate over resolution on weak networks
    photoModeMinFps = 10,                //   ...but give up if framerate falls below this
    photoModeRecoverFps = 25             //   ...and resume once it recovers
)

On weak connections, photoModeMaintainResolution = true keeps the image sharp by lowering framerate instead — with a safety floor so the video never becomes a slideshow.

Faster rear-camera focus

The rear camera now focuses using a photo-optimized autofocus mode. Documents and ID cards held close to the lens lock focus noticeably faster and more decisively.


Fixes

  • Crash on some Samsung devices — calls could crash while the SDK inspected Bluetooth audio devices. Bluetooth handling is now fully fault-tolerant; a Bluetooth problem can no longer end a call.
  • Upside-down camera on certain devices — the local and remote video appeared inverted on some older/legacy-camera devices. Fixed.
  • Faster reconnection after a network blip — the SDK now retries the signaling connection almost immediately (100 ms instead of 1 s), so short network interruptions reconnect to the existing call instead of dropping it.
  • Better support diagnostics — the SDK now logs which camera API it selected and why, plus camera orientation details. Speeds up device-specific issue triage; include your logs when reporting a camera problem.

Action Required Before Upgrading

1. Bluetooth permission (Android 12 / API 31+)

If your app supports Bluetooth headsets, it must declare and request at runtime the BLUETOOTH_CONNECT permission:

<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

Without it, calls still work — audio simply routes to the earpiece/speaker instead of the headset. Previously the SDK attempted to use Bluetooth without this permission, which is what caused the Samsung crash.

2. Camera opens at higher resolution

The camera is now opened at up to 1080×1440 by default so photo mode can switch instantly. Expect slightly higher device power/memory use during calls. The transmitted stream during normal call time is unchanged — still your configured videoWidth × videoHeight.

To restore the previous behavior:

photoModeVideoBoostEnabled = false

3. Photo-mode aspect ratio

If you override photoModeVideoWidth/photoModeVideoHeight, keep the same aspect ratio as your videoWidth/videoHeight. A mismatched ratio will fail call recording.


Compatibility

No changes to the public call API. Existing integrations compile and run unchanged after the permission item above is addressed.

1.1.0.134

  • SDK Http requests, handled DNS probing errors.
  • SDK Http requests, handled tcp socket errors.
  • QueueSocket double-free crash fixed.

1.0.20.54

  • Fixed a bug when agent mutes themselves user is muted too (audio/video).

1.0.19.152

  • Attributes["Mobile"] is set to "Android" for recorder rotation fix
  • Fixed a crash when changing camera rotation when the flash is open on certain devices.

1.0.19.118

  • Changed the order of switchCamera() action and TakePhotoOn/TakePhotoOff events. From now on the the events will be triggered after the camera is updated to fix visual glitches in certain devices

1.0.19.82

  • Fixed application crash when DialEx receives a network exception, It will instead raise this event
VideoCallEvent(
    CallEventTypes.Error,
    error = ECVError.DIAL_FAILED,
    detail = "EXCEPTION: " + e.message,
    objData = e
)
  • Fixed application crash when WaitForRoomInterval receives a network exception.
VideoCallEvent(
    CallEventTypes.Error,
    error = ECVError.WAIT_FOR_ROOM_FAILED,
    detail = "EXCEPTION: " + e.message,
    objData = e
)

1.0.18.125

This is the first version distributed via our Artifactory repository.

Artifact Distribution Update

Starting with version 1.0.18.125, all new releases of the ECV SDK and its dependencies are published to our official Artifactory repository.

Manual download and management of .aar files is now deprecated. To integrate the SDK, you must first add our repository to your project's settings.gradle file. This is a one-time setup.

Add the Repository to your Project

Add the following maven block inside the repositories block of your project-level settings.gradle.kts (or settings.gradle) file.

For Kotlin DSL (settings.gradle.kts):

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        // --- Add the ECV Artifactory Repository Here ---
        maven {
            url = uri("https://repo.easyconnect.cloud/repository/android-maven-public/")
        }
        // --- End ---
    }
}

For Groovy DSL (settings.gradle):

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        // --- Add the ECV Artifactory Repository Here ---
        maven {
            url 'https://repo.easyconnect.cloud/repository/android-maven-public/'
        }
        // --- End ---
    }
}

After adding the repository, you can declare the dependencies in your app-level build.gradle file as shown in the release notes below.


1.0.18.125

This is the first version distributed via our Artifactory repository.

To use this version, add the following Maven coordinates to your app-level build.gradle or build.gradle.kts file.

Kotlin DSL (build.gradle.kts):

dependencies {
    implementation("group.ccr.ecv:ecv-175-sdk:1.0.18.125")
    implementation("org.webrtc:libwebrtc:M134")
    implementation("group.ccr.ecv.external:autobahn-android-legacy:20.2.1")
}

Groovy (build.gradle):

dependencies {
    implementation 'group.ccr.ecv:ecv-175-sdk:1.0.18.125'
    implementation 'org.webrtc:libwebrtc:M134'
    implementation 'group.ccr.ecv.external:autobahn-android-legacy:20.2.1'
}

Additional Resources

Legacy Versions (Manual .aar Download)

The following versions were distributed as direct .aar file downloads. This distribution method is deprecated.

1.0.18.108

Files
File Algorithm Hash
ECV-175-SDK-1.0.18.108-release.aar SHA256 C05CB101286CE65FDE973132632D324D1E879017E705B354A67BB12F11A59315
autobahn-android-legacy-20.2.1.aar SHA256 B510E1B607DCB77D059BCD09D53539B5E56CF99094ED4040709C27EE23347330
M134-libwebrtc.aar SHA256 3524B0992A6FB53C3DBA527EF994DD060FA75B909763A9D4047064CB7FCDE4F1

1.0.18.106

  • Fixed StartHold and EndHold events not being sent when connectParams.autoHandleHoldSideEffects is set to false.
Files
File Algorithm Hash
ECV-175-SDK-1.0.18.106-release.aar SHA256 68ED1CF60D49CF6111637FED1D38908834AEA1671948AB24511479E0583D118A
autobahn-android-legacy-20.2.1.aar SHA256 B510E1B607DCB77D059BCD09D53539B5E56CF99094ED4040709C27EE23347330
M134-libwebrtc.aar SHA256 3524B0992A6FB53C3DBA527EF994DD060FA75B909763A9D4047064CB7FCDE4F1

1.0.18.95

Files
File Algorithm Hash
ECV-175-SDK-1.0.18.95-release.aar SHA256 C7ECEE22B357C7198FB0F31388136DA3ECF4689D2BA23352BF71E4F0ED091DC6
autobahn-android-legacy-20.2.1.aar SHA256 B510E1B607DCB77D059BCD09D53539B5E56CF99094ED4040709C27EE23347330
M134-libwebrtc.aar SHA256 3524B0992A6FB53C3DBA527EF994DD060FA75B909763A9D4047064CB7FCDE4F1

1.0.18.73

Changes
  • Properties within ConnectParameters can now be set outside of the constructor.
  • The requirement to detach the previous renderer when switching between local and remote camera renderers has been removed. (You still need to call them if using a completely new SurfaceViewRenderer object).
  • videoCall.getWebRtcConnection().attachLocalView and videoCall.getWebRtcConnection().attachRemoteView can now be called as soon as the video Activity is opened, without waiting for any events.
Files

1.0.18.47

1.0.18.45

1.0.18.12