Skip to content

Instantly share code, notes, and snippets.

@Pranit-Harekar
Last active November 18, 2022 23:51
Show Gist options
  • Save Pranit-Harekar/548998a4f8b66fcae000ad15b81bd8f7 to your computer and use it in GitHub Desktop.
Save Pranit-Harekar/548998a4f8b66fcae000ad15b81bd8f7 to your computer and use it in GitHub Desktop.
Unable to pair DS2278 manually via latest Android SDK v2.6.10.0
class MainApplication : Application() {
override fun onCreate() {
// Initialize zebra scanner
val sdkHandler = SDKHandler(this)
ZebraScanner(sdkHandler)
}
// rest of the code ..
}
package com.myorg.myapp.scanners
import android.util.Log
import com.zebra.scannercontrol.*
import com.zebra.scannercontrol.DCSSDKDefs
import kotlinx.coroutines.*
// Note: - `sdkHandler` is initialized & passed from MainApplication
class ZebraScanner(private val sdkHandler: SDKHandler) : IDcsSdkApiDelegate {
private val scannerInfoList = mutableListOf<DCSScannerInfo>()
init {
sdkHandler.dcssdkSetDelegate(this)
sdkHandler.dcssdkSetOperationalMode(DCSSDKDefs.DCSSDK_MODE.DCSSDK_OPMODE_BT_NORMAL)
var notificationsMask = 0
// subscribe to all scanner availability events
notificationsMask = notificationsMask or (DCSSDKDefs.DCSSDK_EVENT.DCSSDK_EVENT_SCANNER_APPEARANCE.value or
DCSSDKDefs.DCSSDK_EVENT.DCSSDK_EVENT_SCANNER_DISAPPEARANCE.value)
// subscribe to all scanner connection events
notificationsMask = notificationsMask or (DCSSDKDefs.DCSSDK_EVENT.DCSSDK_EVENT_SESSION_ESTABLISHMENT.value or
DCSSDKDefs.DCSSDK_EVENT.DCSSDK_EVENT_SESSION_TERMINATION.value)
// subscribe to all barcode events
notificationsMask = notificationsMask or DCSSDKDefs.DCSSDK_EVENT.DCSSDK_EVENT_BARCODE.value
sdkHandler.dcssdkSubsribeForEvents(notificationsMask)
sdkHandler.dcssdkEnableAvailableScannersDetection(true)
sdkHandler.dcssdkGetAvailableScannersList(scannerInfoList)
sdkHandler.dcssdkGetActiveScannersList(scannerInfoList)
}
private fun connectToScanner(id: Int) {
CoroutineScope(Dispatchers.Default).launch {
val result = sdkHandler.dcssdkEstablishCommunicationSession(id)
Log.d("ZebraScanner", "Scanner connection result: ${result.name}")
}
}
// --------------------------
// -- All delegate methods --
// --------------------------
override fun dcssdkEventScannerAppeared(scannerInfo: DCSScannerInfo?) {
val scannerName = scannerInfo?.scannerName
val scannerId = scannerInfo?.scannerID
Log.d("ZebraScanner", "Scanner appeared: name=$scannerName id=$scannerId")
if (scannerId != null) {
Log.d("ZebraScanner", "Connecting to $scannerName...")
connectToScanner(scannerId)
}
}
override fun dcssdkEventScannerDisappeared(id: Int) {
Log.d("ZebraScanner", "Scanner disappeared: $id")
}
override fun dcssdkEventCommunicationSessionEstablished(scannerInfo: DCSScannerInfo?) {
Log.d("ZebraScanner", "Scanner communication session established: $scannerInfo")
}
override fun dcssdkEventCommunicationSessionTerminated(id: Int) {
Log.d("ZebraScanner", "Scanner communication session terminated: $id")
}
override fun dcssdkEventBarcode(barcodeData: ByteArray?, barcodeType: Int, scannerId: Int) {
Log.d("ZebraScanner", "Received barcode: ${barcodeData.toString()}")
}
override fun dcssdkEventImage(imageData: ByteArray?, id: Int) {
Log.d("ZebraScanner", "Received image: $imageData from $id")
}
override fun dcssdkEventVideo(videoData: ByteArray?, id: Int) {
Log.d("ZebraScanner", "Received video: $videoData from $id")
}
override fun dcssdkEventBinaryData(binaryData: ByteArray?, id: Int) {
Log.d("ZebraScanner", "Received binary: $binaryData from $id")
}
override fun dcssdkEventFirmwareUpdate(event: FirmwareUpdateEvent?) {
Log.d("ZebraScanner", "Firmware update: $event from ${event?.status}")
}
override fun dcssdkEventAuxScannerAppeared(scannerInfo1: DCSScannerInfo?, scannerInfo2: DCSScannerInfo?) {
Log.d("ZebraScanner", "Aux Scanner appeared: $scannerInfo1 & $scannerInfo2")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment