=============================
UnitechSDK V1.2.46 READ ME
=============================

UnitechSDK is an Android Java-based SDK for developing applications that interacts with Unitech-specific features on Unitech Android-based mobile devices. 

@End-User License Agreement (EULA):
Please read the "LICENSE" file ("The EULA") carefully before using the UnitechSDK. 
The UnitechSDK software license shall be granted to you when you have fully accepted all clauses, terms, conditions and obligations in The EULA.
Failure to accept The EULA, please stop using the UnitechSDK software and delete all copies of the software from your all your computer devices.

@Non-MainThread Usage:
To start using the SDK, please start a project in your Android Studio, import the UnitechSDK JAR library into your project, and then reference the API functions exposed by the library.
The code that calls the SDK functions must not be resident on the main thread in your Android app. 
Please refer to the UnitechSDKTester sample app source code for an example how to implement your app with SDK function calls outside of the Main thread.

@Dependency Apps:
Before developing or deploying your apps onto the supported device models, please make sure that the dependency apps with the minimum version required are installed. 
This SDK requires correct versions of AppCtrlService and DMService to function correctly. (Please refer to below discussions to see the minimum versions required).
Please implement a prerequisite checking mechanism in your own app that will check for and install the dependency apps if the target device does not have the correct apps/versions installed.

@Javadoc
API documentation is provided as javadoc. 
The UnitechSDKTester application also comes with its source code project, allowing you to study how apps can reference the API functions from the JAR library.

@UnitechSDK Tester
This is the test app to try out different functions of the SDK. The source code of this application is also included for your reference.
Please import the project into your Android Studio (minimum version 4.0), together with the SDK JAR library and build to test.

@SampleCode 
The SampleCode directory contains sample codes for UnitechSDK to be used in conjunction with a different third-party development framework, or with a different programming language.
These sample code are provided as-is, please use for testing purposes only, do not use directly with your production or mission-critical applications. 
Unitech will not be liable for any damages and liabilities caused because the sample code is being misused or misinterpreted. 
If you have a question about using a different development framework, please consult unitech or the framework authors for more information.


-----------------------------------
Requirements
-----------------------------------
Before developing and deploying your apps onto the devices, these dependency apps are required to be installed.
The minimum version required for each dependecy apps are listed below:
- AppCtrlService V1.0.30.1 or later
- DMService V1.2.54.5 or later
(Note: You can find the APK files of the dependency apps under the "dependecy" directory)

This version of the UnitechSDK supports the following device models:
- PA760 Android 9		(MinimumOS:	MR6)
- PA760 Android 10		(MinimumOS: MR1)
- EA630 Android 9		(MinimumOS: 173)
- EA630 Android 10		(MinimumOS: 092)
- WD200 Android 10		(MinimumOS: CR3)
- HT730 Android 10  	(MinimumOS: 1.0.13)
- TB85Plus Android 10	(MinimumOS: RU.00.53.84.09)
- EA520 Android 11		(MinimumOS: V003)
- EA520_US Android 11	(MinimumOS: V003)
- EA520 Android 13		(MinimumOS: ELSA_MP_V101.12_20241123)
- EA630Plus Android 11	(MinimumOS: V0.33.0_20220323)
- EA630Plus Android 12	(MinimumOS: EMMAII_V1.45_20241030)
- HT330 Android 12		(MinimumOS: V04.0_2_20220428)
- PA768 Android 12      (MinimumOS: V05.00.05_20221221)
- PA768 Android 14      (MinimumOS: RAYA_V06.23b01_20241113_user)
- EA660 Android 13		(MinimumOS: AURORA_DVT2_V10.00_20231112)
- RT112 Android 13		(MinimumOS: IRIS_V05.00.04_20231026_user)
- WD200P Android 13		(MinimumOS: LUCYII_V13.00.01.01_20250318)
- PA768e Android 14		(MinimumOS: RAYAe_V01.18b01_20250105)
- HT730P Android 14  	(MinimumOS: SELINAII_V01.40b01_20250313)


----------------------------------------
Directory Structure
----------------------------------------
This SDK Package contains the following directory structure
+--UnitechSDK_V1.2.46									[The UnitechSDK]
|  |
|  +--dependencies										[Dependency APKs for supported models]
|  |  |
|  |  +--Experimental									[Experimental dependency APKs for testing purposes only]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_EA520.apk		[AppCtrlService APK required for EA520A11 & EA520_USA11]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_EA630.apk		[AppCtrlService APK required for EA630A9 & EA630A10]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_EA630Plus.apk	[AppCtrlService APK required for EA630PlusA11]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_EA660.apk		[AppCtrlService APK required for EA660A13]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_HT330.apk		[AppCtrlService APK required for HT330A12]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_HT730.apk		[AppCtrlService APK required for HT730A10]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_HT730P.apk		[AppCtrlService APK required for HT730P A14]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_PA760.apk		[AppCtrlService APK required for PA760A9 & PA760A10]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_PA768.apk		[AppCtrlService APK required for PA768A12 & PA768A14]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_PA768e.apk		[AppCtrlService APK required for PA768eA14]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_RT112.apk		[AppCtrlService APK required for RT112A13]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_TB85Plus.apk	[AppCtrlService APK required for TB85PLUSA10]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_WD200.apk		[AppCtrlService APK required for WD200A10]
|  |  |
|  |  +--AppCtrlService_1.0.30.1_SystemUID_WD200P.apk		[AppCtrlService APK required for WD200P A13]
|  |  |
|  |  +--DMService_1.2.54.5_EA520.apk						[DMService APK required for EA520A11 & EA520_USA11]
|  |  |
|  |  +--DMService_1.2.54.5_EA630.apk						[DMService APK required for EA630A9 & EA630A10]
|  |  |
|  |  +--DMService_1.2.54.5_EA630Plus.apk					[DMService APK required for EA630PlusA11]
|  |  |
|  |  +--DMService_1.2.54.5_EA660.apk						[DMService APK required for EA660A13]
|  |  |
|  |  +--DMService_1.2.54.5_HT330.apk						[DMService APK required for HT330A12]
|  |  |
|  |  +--DMService_1.2.54.5_HT730.apk						[DMService APK required for HT730A10]
|  |  |
|  |  +--DMService_1.2.54.5_HT730P.apk						[DMService APK required for HT730P A14]
|  |  |
|  |  +--DMService_1.2.54.5_PA760.apk						[DMService APK required for PA760A9 & PA760A10]
|  |  |
|  |  +--DMService_1.2.54.5_PA768.apk						[DMService APK required for PA768A12 & PA768A14]
|  |  |
|  |  +--DMService_1.2.54.5_PA768e.apk						[DMService APK required for PA768eA14]
|  |  |
|  |  +--DMService_1.2.54.5_RT112.apk						[DMService APK required for RT112A13]
|  |  |
|  |  +--DMService_1.2.54.5_TB85Plus.apk					[DMService APK required for TB85PLUSA10]
|  |  |
|  |  +--DMService_1.2.54.5_WD200.apk						[DMService APK required for WD200A10]
|  |  
|  |  +--DMService_1.2.54.5_WD200P.apk						[DMService APK required for WD200P A13]
|  |  
|  +--javadoc											[javadoc for the UnitechSDK]
|  |  
|  +--UnitechSDK_1.2.46.jar								[The UnitechSDK JAR library file]
|  |  
+--UnitechSDKTester_V1.2.44.1							[The SDK Tester app with source code]
|  |  
|  +--UnitechSDK_Tester_1.2.44.1_src.zip				[Tester App Source Code]
|  |  
|  +--UnitechSDK_Tester_1.2.44.1.apk					[Tester App Binary APK file]
|  |  
+--SampleCode											[The sample code for different third party dev frameworks]
|  |  
|  +--SampleCode_Xamarin.zip							[Sample Code for developing with Xamarin]
|  |
|  +--SampleCode_ReactNative.zip						[Sample Code for developing with React Native]


-----------------------------------
UnitechSDK Changelog History
-----------------------------------
@New APIs Summary
[v1.2.46]
- ScanBridgeCtrl - Adds 3 new APIs to control the unitech ScanBridge app: exportSettings, importSettings, resetSettings.
- EnterpriseBrowserCtrl - Adds 5 new APIs to control the EBrowser app: exportSettings, importSettings, resetSettings, startURLSettings, licenseActivate
- TelephonyCtrl - Adds 8 new APIs: downloadESimSubscription,downloadESimSubscriptionWithNickname, deleteESimSubscription, getEID, switchESimByName, getSubscriptionInfo, isSimCardExist, getNetworkDataUsage
- BatteryCtrl - Adds 3 new APIs: getCurrent, getBackupBatteryVoltage, getBackupBatteryChargingStatus
- BluetoothCtrl - Adds 2 new APIs: setScanMode, setBluetoothName
- LocationCtrl - Adds 1 new API: getAllData (get All GPS data fields in one response)
- WlanCtrl - Adds 4 new APIs: setWifiHotspotEnable, setWifiHotspotConfiguration, setWifiTurnOnAuto, setWifiNetworkNotification
- PowerCtrl - Adds 2 new APIs: ColdBootButKeepESIMs(Factory Reset the device without clearing the eSIMs), ShutDown
- EthernetCtrl - Adds 3 new APIs: setProperty, getProperty, getAvailableInterfaces 
- KeypadCtrl - Adds 6 new APIs: set/get functions for Functionkey, AlphaMode, AlphaKey
- StageGoCtrl - Adds 1 new API: loadAndRunScript function to allow OEMConfig to execute StageGO script. (Bugzilla#6020)

[v1.2.30]
- BatteryCtrl: Add 1 new function: setChargingLimit [v1.2.30]
- ELauncherCtrl: Add 8 new functions: enableAllowInteractiveNotification, enableFloatingNotification,  setNotificationBubbleDuration, enableDashboard, setDisplayNotificationTab, setDisplayActionTab, setDisplaySettingTab, setDockApps. 

[v1.2.30]
- SoftwareUpdateCtrl: Add 1 new function: updateConfig [v1.2.30]
- SecureCtrl: Add 2 new functions: LockscreenGetType, LockscreenSetType [v1.2.30]

[v1.2.25]
- SafeModeLockCtrl: Add 2 functions isSafeModeLockEnabled, getLauncherPackageName [v1.2.25]
- DeviceInfoCtrl: Add getNetworkInformation function [v1.2.25]
- ScannerCtrl: Add 2 new functions: importUSSProfile and exportUSSProfile [v1.2.13]
- DeviceInfoCtrl: Add getIMSI() [v1.2.12]
- DeviceInfoCtrl: Add DeviceInfoCtrl class, contain getDeviceSerialNumber(), getDeviceBuildNumber(), getIMEI(). [1.2.10]
- SafeModeLockCtrl: Add a new function setSafeModeLock with password. [v1.2.5]
- DevelopmentSettingCtrl: Add functions to change Developer options setDesktopMode, setFreeformSupport, setResizableActivities  

[v1.2.2]
- AppManagementCtrl: Add installApp with permission grant parameter api. [v1.2.1]
- AppManagementCtrl: Add grantAppPermission API [v1.2.1]
- BluetoothCtrl: Add getActiveBluetoothProfile method [v1.2.0]
- FileCtrl: Add getExternalStorageInfo method [v1.2.0]
- FileCtrl: Add getTotalFlashSize method [v1.2.0]
- FileCtrl: Add getAvailableFlashSize method [v1.2.0]


@Full Change Logs
v1.2.46
	[New]
	1. Add for HT730P setGloveModeType
	2. Add KeypadCtrl APIs: set/get functions: Functionkey, AlphaMode, AlphaKey
	3. Add StageGoCtrl API: loadAndRunScript function to allow OEMConfig to execute StageGO script. (Bugzilla#6020)
	4. Add TelephonyCtrl API: downloadESimSubscriptionWithSubscription 
	
	[Fixed]
	1. Fix DMICtrl fail to control HT730 scanner with optimize DMICtrl code structure.
	
v1.2.42
	[New]
	1. add ScanBridgeCtrl - a new set of APIs to control the unitech ScanBridge app.
	2. add TelephonyCtrl APIs: downloadESimSubscription, deleteESimSubscription, getEID, switchESimByName and getSubscriptionInfo.
	3. add BatteryCtrl API: getCurrent, getBackupBatteryVoltage, getBackupBatteryChargingStatus
	4. add BluetoothCtrl APIs: setScanMode, setBluetoothName
	5. add LocationCtrl API: getAllData (get All GPS data fields in one reponse)
	6. add WlanCtrl APIs: setWifiHotspotEnable, setWifiHotspotConfiguration
	7. add PowerCtrl API: ColdBootButKeepESIMs	(Factory Reset the device without clearing the eSIMs)

	[Fixed]
	1. fix the javadoc issue that get the wrong bundle key for getSignalStrength method	
	2. fix scanbridge export not get exported file in time (issue from V1.2.39)
	
	[Changed]
	1. update ServiceCtrl: to allow using DMService to execute AndroidService API.	

v1.2.35		
	[New]
	1. add TelephonyCtrl api isSimCardExist, getNetworkDataUsage	
	2. add support for receiving EBrowser importSetting/ActivateLicense intent response. 
	3. add GetKeymappingEnabled for EA660, PA768
	4. add WlanCtrl: setWifiTurnOnAuto and setWifiNetworkNotification function
	5. add EnterpriseBrowserCtrl: exportSettings, importSettings, resetSettings, startURLSettings, licenseActivate function
	6. add PowerCtrl ShutDown API
	7. add EthernetCtrl setProperty, getProperty, getAvailableInterfaces API
	
	[Fixed]
	1. fix 5G network reports as 4G issue 
	2. fix the issue that need to bind dmservice instead of userservice for TelephonyCtrl class
	3. fix enterpriseBrowser api, remove wrong error code message.	
	4. add 2 seconds delay after install app.
	5. add 2 seconds delay after execute elauncher importSettings.

v.1.2.30
	1. Add 1 new function: batteryCtrl/setChargingLimit function
	2. Add 8 new functions: ElauncherCtrl support for more config options:
		a. enableAllowInteractiveNotification() - Allow Interactive Notification (ON/OFF) 
		b. enableFloatingNotification() - Floating Notifications (ON/OFF)
		c. setNotificationBubbleDuration() - Notification bubble duration 
		d. enableDashboard() - Enable Dashborad (ON/OFF)
		e. setDisplayNotificationTab() - Display Notifications Tab (ON/OFF)
		f. setDisplayActionTab() - Display Quick Actions Tab (ON/OFF)
		g. setDisplaySettingTab() - Display Quick Settings Tab (ON/OFF)
		h. setDockApps() - Set Dock Apps (app1,app2,app3,app4)"
	3. Add 1 new function: SoftwareUpdateCtrl/updateConfig. This allows setting Software Update settings programmatically.
	4. Add 2 new function: SecureCtrl/LockscreenGetType & SecureCtrl/LockscreenSetType (supports EA660 and RT112 only). These sets the screen lock type to None, Swipe, PIN or Password.
	5. Supports EA660A13 & RT112A13

v.1.2.25
	1. fix TagAccess Export wrong fail return message
	2. provide USUCtrl getResponseBundle to allow app get result bundle directly not touch sdk property.
	3. fix TagAccessCtrl import block sometimes and export to wrong path issue.
	4. fix JIRA-250, RFID2Key import/export to directory wrong result issue.
	5. fix JIRA-246, ScannerCtrl, exportUSSProfile change flow, no delete folder.
	6. fix StageGO JIRA-256 safemodeLock with default Launcher on Android 11 above issue
	7. add SafeModeLockCtrl isSafeModeLockEnabled and getLauncherPackageName function
	8. update appctrl to avoid intent redirection Vulnerability that detect by Google Play.
	9. add getNetworkInformation in DeviceInfoCtrl.
	10. fix ELauncher SetKioskApp fail from StageGO_2.0 release.
	12. support ELauncherCtrl2.0, LaunchersApp, BlockApp, PinCode, KioskApp, setMode, recentKeyLock, import/export/reset
	13. fix ELauncherCtrl export/import Settings conflict with ELauncher2.0 UI.
	14. AppCtrl: setDefaultApp update errorMsg
	15. DisplayCtrl: setScreenBacklightLevel, PA768 brightness control not linear.
	16. LocationCtrl: setLocationMode, add limitation of mode (0~3)
	17. LoggerCtrl: fix for import/export setting DefaultSetting file will be removed unexpected.
	18. update EnterpriseKeyboardCtrl import default return value
	19. FileCtrl: fix copyFile fail in case of R->nW or nR->W case.
	20. fix KeyremapCtrl, prevent from device crash(EA630Plus), broadcastupAction zero length string cause device crash.
	21. fix FileCtrl openFile, JIRA SDK-86, check file exist before open
	22. fix FileCtrl, JIRA SDK79,80,81,82,83,84,87, export/import to/from path not exist fail issue
	23. Supports React Native

v1.2.18
	1. Fix the issue that getAvailableFlashSize call getTotalRAMSize method instead of call getAvailableFlashSize
	2. Fix EnterpriseKeyboardCtrl error method name.
	3. Scanner add resetUSSProfile().
	4. SDK, uapps, EnterpriseKeyboard, importSettings and exportSettings add code flow error handle.
	5. update EnterpriseKeyboard, Logger, USUS, TagAccess to allow export/import from file/folder path.
	6. fix KeymappingCtrl addKeyMappings fail (LaunchApp).
v1.2.13
    1. fix javadoc description for getIMSI.
    2. SDK, ScannerCtrl add importUSSProfile and exportUSSProfile
            Only support  A10: PA760, HT730
            A11, A12: HT330, EA630Plus, EA520
    3. update AppCtrl jar to 1.0.24 for activateAppWithClassName API.

v1.2.12
	1. DeviceInfoCtrl, add getIMSI().
		
v1.2.11
	1. for getDefaultKeyCode function
	2. fix jira SDK-50, fail to ReadFromFile with large file size.
	3. SDK, SoftwareUpdateCtrl, updateConfig(), change tmpfile path from cache foldr to /sdcard/unitech/
	
v1.2.10
	1. Add DeviceInfoCtrl, contain getDeviceSerialNumber(), getDeviceBuildNumber(), getIMEI().
	2. provide FileCtrl.pathConverter AIDL for SD/, FLASH/ or USB/ path convert.
	
v1.2.9
	1. fix ELauncher set Wallpaper.png Fail when path is same with ELauncher default wallpaper path. 2. fix copyfile fromPath is same with toPath.
	2. add set KioskApp pkgName is available check
	3. add check input packageName is launcherApp check to setSafeModeLock function
	4. Fixed Problem: [USU/SetScannerSymbologyConfiguration] input wrong value still success
	5. fix JIRA-SDK40, update getkeyremap and resetkeymap error code for not support device
	6. fix DCMO DozeMode(DMService) conflict with DMIService usage.
		
v1.2.8
	1. update AppManagementCtrl service bind function. StageGO fail to update service apk issue.
	2. change ProgrammableKeyAIDL Interface method check.
	
v1.2.7
	1. fix EA630Plus keymapping with keycode issue.
	
v1.2.6
	1. make getAllInstalledPkgNameList api using appctrlservice implementation when SDK_INT>=30 & not system app
		
v1.2.5
	1. add com.unitech.programmablekey aidl file, and update with programmablekey aidl declare for new model usage
	3. KeymappingCtrl, addKeyMappings, LaunchApp, keycode add new rule for after 2022 device(ex:ea630plus...)
	4. SafeModeLockCtrl add a new function setSafeModeLock with password.
	
v1.2.4
	1. update ClockCtrl jardoc description
	2. provide AppCtrlService install result check to avoid return false even update successfully.
	3. add com.unitech.programmablekey aidl file, and update with programmablekey aidl declare for new model usage
	4. fix fail to use aidl with writeToFile, copyFile
	
v1.2.3
	1. add getAllAppNameList, getAllPkgNameList in AppManagementCtrl
	
v1.2.2
	1.add developmentsetting feature, 
	2.fix Xarmin fail to generate sdk dll, 
	
v1.2.1
	1. fix AppManagementCtrl fail to bind AIDL.
	2. update targetSDK to 29
	3. add installApp with permission grant parameter api.
	4. add grantAppPermission API

v1.2.0
	1. update KeymappingCtrl parseKeyCode using AppCtrlService in case if not valid (Android 11 Above).
	2. using AppCtrl 1.0.19 for queryIntentService that used in StageGO SET_DEFAULTIME
	3. provide resolveActivity API in AppManagementCtrl
	4.remove limitation for request certPath in setWifiEnterpriseProfile api
	5.update ver to 1.2.0-RC12
	6. provide resolveActivity API in AppManagementCtrl
	7. change FileCtrl List implementation with both Native and DMService list handling
	8. add getActiveBluetoothProfile method
	9. move AnalyticsServiceAidlForAgentVerFourPointZero aidl file to analyticsservice package
	10. fix wrong openfile handling
	11. add getExternalStorageInfo for FileCtrl api
	12. update error code handle for FileCtrl storageinfo check
	13. SDK, DmiCtrl, set fucntion fix status data error for new machines.
	14. update AppManagementCtrl installApp check procedure
	15. update filectrl implementation
	16. add getTotalFlashSize method
	17. merge SDK1.1 solution.
		Fix DMI handling takes too much time.
		Fix cannot valid parameters of Keymap->addKeyMappings.
		File related works depend on DMService'
	18. using update filectrl for package info check.
	19. implement apk package info check solution if dmservice package not found.
	20. SDK, KeymappingCtrl, Constructor mServiceHandler add package check for new package name.
	21. fix the issue that always waiting for 3 sec for bind not exist service
	22. [Android] All function add string and int range check
	23. fix JIRA-170, using DMService FileCtrl if Appctrlservice does not have read external storage permission.
	24. add getAvailableFlashSize method
	25. add description java doc to LocationCtrl, MemoryStorageCtrl and WlanCtrl class
	26. add description java doc to getDeviceSerialNumber and getDeviceBuildNumber methods
	27. add description java doc to getScreenPixels and getScreenOrientation method
	28. add description java doc to BluetoothCtrl class
	29. add description java doc to BatteryCtrl class
	30. add description java doc to getActiveNetworkBearers, getWWANIpAddress, getSignalStrength, getDefaultDataSubscriptionId and getSupportNetworkBearers methods
	31. add java doc to SetDataQueryTime ,RollbackDataQueryTime ,GetUnreadData and QueryPeriodData methods



----------------------------------------
Disclaimer
----------------------------------------
UnitechSDK is Copyright 2020-2025 by Unitech Electronics Co. Ltd.
All Rights Reserved.

Please read the LICENSE file and accept the license agreement before use.