Android - Migration guide

This page is intended as a guide for the process of migrating from our previous version of SDKs to our newest (CMMobileSDK).

Previously, the sniffer and wizard library were part of one framework (CameraWizard) and the streaming part of a second framework (CameraStreamer). This is not the case anymore, as there's only one framework (CMMobileSDK) which includes all three functionalities as modules. These modules are named as follows: CameraSniffer, CameraWizard and CameraStreamer. All their interfaces can be found here: Public API.

The main big difference between the two SDKs is that the old version needed basic authentication for instantiating objects and used XML API calls for other requests, while the new version requires an access token to be passed with each REST API call.

The steps to install the new mobile SDK can be found here: Android - Installation guide.

Following, we will highlight differences of use for each module.

CameraSniffer + CameraWizard

The first version of the CameraWizard included the sniffer part as well.

The differences are as follows:

Init  Expand source
Start sniffing  Expand source
Stop sniffing  Expand source
Device found/error callbacks  Expand source
Add camera to platform  Expand source
Camera added/error callbacks  Expand source


The differences for the CameraStreamer in the old and new SDK are highlighted as follows:

Init  Expand source
Play method - used only to play recordings  Expand source
Stop method - stops connection to streamer  Expand source


The highlighted differences are the most used methods of our SDKs. The methods presented from CMMobileSDK (v2) in this page are enough for basic setup and usage. They should replace (after the SDK installation) the old methods. Also, any other method implementations from the old SDK that were not highlighted here should be removed as well.

Due to the large spectrum of color formats available on Android devices , we dropped support for the raw frame decoding and adopted the use of the Surface for video playback, in order to assure support for a bigger range of devices. Performance wise, the Surface-based implementation is faster than the raw frame one. The usage is straight forward: You have to provide a valid Surface to the CameraStreamer constructor.