GA2 | Improvements & Changes- Make use of Nordic Bluetooth Libs instead of native implementations for compatibility
- "no.nordicsemi.android:ble" and "no.nordicsemi.android.support.v18:scanner" have to be added as dependency (see HowTo documentation)
- Updates of DeviceConnector class are published from the UI thread
- Integrated pairing process in DeviceConnector class
- DeviceConnector registers a Reciever for ACTION_PAIRING_REQUEST to handle it within the SDK instead of using the system
- A popup with the passkey is displayed and connection is initiated after accepting
- This can be enabled/disabled by calling DeviceConnector#enablePairing
- DeviceListener API change:
- removed #onPairingFailed(AirIdCardTerminal
- added #onPaired(AirIdCardTerminal, boolean)
- Added support for new Settings
- BLEPrivacy: Off, RandomMac, AnonymousAdvertising, All
- BLENightMode: Disabled, Enabled
- USBMode: Flash, Card, FIDO2, Charge
- FidoAutoUserPresence: Disabled, Enabled
- BleFidoServiceRevision: FIDO2, U2F
- Marked Settings as deprecated
- since FW 1.4.0: SignalStrength, AdvertisingMode, ContrastLevel
- since FW 2.2.0: DisplaySetting, BacklightSetting
- Added support for new DeviceDescriptor keys: "ota", "fido", "rk"
- Added unpair behavior if notifications could not be registered indicating broken paring caused by resetting the AirID
- Added support for T=0, T=1 (compatible with firmware > 2.2.0)
- manual connect: AirIdCardTerminal#connect
- auto connect: DeviceConnector#setProtocol
- the chard gets reconnected on protocol update
- Connection can be recovered if pairing is lost no matter what side lost the Pairing
- Connection can be recovered if a firmware update changes BLE services
- Updated HowTo documentation for permissions:
- The application has to request permission ACCESS_COARSE_LOACTION on runtime. BLE can not be used.
- Refactored security code to use Bouncy Castle library for encryption
- "org.bouncycastle:bcpkix-jdk15to18" and "org.bouncycastle:bcprov-jdk15to18" have to be added as dependency (see HowTo documentation)
- Optimized GATT transmission speed (Firmware > 2.2.0)
- Firmware updares are speed up by factor ~3
Bugfixes- Fixed concurrency issues during pairing and connection process
- Fixed a connection bug related to outdated LTK
- Fixed previos undefined behavior if connection was lost before established compleatly
- Fixed a bug where AirIdCardTerminal#wairForCardPresent waited even thoug the connection was lost
- Fixed issues during automatic pairing caused by asyncrounously waiting for the system component
- Fixed bugs related to Nordic lib refactoring (pairing and connect)
- Fixed a bug where the long term key (LTK) could not be saved/loaded when AirIdCardTerminal#setPackageName was not called
- Fixed resourceleak where Bluetooth Receivers where not unregistered
- Fixed a bug resulting in wrong MTU length
Removed- Removed deprecated function AirIdCardTerminal#receiveCardInfo
- Use of deprecated indications RepeatCardStatus and RepeatUsbCableState
- Compatibilitiy to prior to but not including AirID1 (not AirID2) Firmware 1.2.1 / 1.3.0-GOV
- Removed compatibility code that used ECB encryption
| - compiled for API 30;
- minSdk is still at API 24
- Android Studio 2020.3.1 Patch 4
- gradle 7.0.2
| AirID-Android-SDK-v3.0.0-GA2.zip | AirID-Android-SDK-v3.0.0-GA.zip.sha2_256 |
AirID SDK for Android | AirID SDK for Android | 2.0.3-GA | Improvements & Changes- Cleanup release code for RCPTunnelService
- Stabalized connection process
- Handling of sporadic exceptions when disconnect
- Optimized DeviceConnector for reconnect reliability
Bugfixes- Fixed release of Bluetooth Receiver
- Fixed sporadic Exceptions when Androids Bluetooth Stack resets itself
- Fixed deadlock in DeviceConnector
| - compiled for API 30;
- minSdk is still at API 23
- Android Studio 2020.3.1 Patch 3
- gradle 6.1.1
| | |
AirID SDK for Android | AirID SDK for Android | 2.0.2-GA | Improvements & Changes- Reveal all public methods throght the obvuscator instead of naming them individually
- Replaced remaining busy loops with wait (AirIdCardTerminal#waitForConnection, FutureValue#get)
- Replaced Exception#printStackTrace with call to Log
- AirIdCardTerminal#waitForCardPresent and #waitForCardAbsent throw an Exception when connection is not established or lost to prevent wrong useage
- Updated gradle targetSdkVersion to 30
- Unregister android.content.BroadcastReceiver in all cases
| - compiled for API 30;
- minSdk is still at API 23
- Android Studio 4.2.1
- gradle 6.1.1
| AirID-Android-SDK-v2.0.2-GA.zip | |
AirID SDK for Android | AirID SDK for Android | 2.0.1-GA | Improvements & Changes- Fixed some regressions in regards to update callbacks when something goes wrong in between
- Changed Android Support Library to use the AndroidX 1.2.0 Support Library
Removed Functionality- Removed allowBackup in SDK manifest
| - compiled for Android 10 (API 29);
- minSdk is still at API 23
- Android Studio 4.1.0
- gradle 6.1.1
| | AirID-Android-SDK-v2.0.1-GA.zip.sha2_256
|
AirID SDK for Android | AirID SDK for Android | 2.0.0-GA | New Functions- NEW Over-The-Air (OTA) AirID firmware update function
- AirID firmware update includes download from AirID update server and wireless transfer via BLE to AirID device
- Firmware update can be called manually and automatic through AirIDCardTerminal class
- Current Firmware Version can be obtained through AirIDCardTerminal class
- dependency on ed25519 library is required for this feature
- Added support for AirID2 Firmware 2.0.0
- Added pairing option from within SDK when using DeviceConnector
Improvements & Changes- Updated Documentation to include manual and automatically updates via SDK
- Marked deprecated functionality
- CardType and CardOS
- Settings: SignalStrength, AdvertisingMode, ContrastLevel
- Enhanced logging
- Permissions are now managed individually on APP level, not by SDK
Fixed- Fixed issues in regards to BluetoothGATT references
Removed Functionality- Removed permissions from SDK library. Apps are now free to define & manage their individual required permissions on their own.
| - compiled for Android 10 (API 29);
- minSdk is still at API 23
- Android Studio 4.1.0
- gradle 6.1.1
| AirID-Android-Driver-v2.0.0-GA.zip | AirID-Android-Driver-v2.0.0-GA.zip.sha2_256 |
AirID SDK for Android | AirID SDK for Android | 1.9.5-GA | - updated: Android Studio 4.1.0 / Gradle 6.1.1 was used to build the final GA Release
- updated: API compileSdkVersion and targetSdkVersion raised to API 29 (Android 10), minSdk is left to API 23
- fixed: AirIdCardTerminalScanner caused Application Not Responsible (ANR)
- fixed: Register for BluetoothAdaper events to better handle global Bluetooth states (BLE on / BLE off)
- fixed: NullPointerException when using AirIdCardTerminalScanner with Mode#Scan_Lollipop
- optimized: DeviceConnector#waitForCardPresent and DeviceConnector#waitForCardAbsent now use async waiting instead of busy loops
- added: preparations for future over the air firmware update functionality
| - compiled for Android 10 (API 29);
- minSdk is still at API 23
- Android Studio 4.1.0
- gradle 6.1.1
| | |
AirID SDK for Android | AirID SDK for Android | 1.9.4-GA | - Android Studio 3.6.3 was used to build the final GA Release
- Android 10 is now fully supported but we still targeting API version 28
- The Driver now uses android.permission.ACCESS_FINE_LOCATION to support Android 10 in AndroidManifest.xml
- The Driver now uses android.permission.ACCESS_BACKGROUND_LOCATION to support Android 10
- Better support for HW revision A2XX1.1.0 and firmware 1.3.1+.
- Added A2XX and A2MX serial number parsing to DeviceType enum.
- Fixed an issue with AirID1 key management and Android 10
| Android 8 upwards (API 26); Android Studio 3.6.3 | | |
AirID SDK for Android | AirID SDK for Android | 1.9.3-GA | - Updated Gradle version to v3.4.1
- Activated NSLogger for debug version
- Implementation of accessibility for AirID2 Mini readers
- Defined new setting for LEDs for AirID2 Mini
| Android 8 upwards (API 26); Android Studio 3.4.1 | AirID-Android-Driver_v1.9.3-GA.zip | AirID-Android-Driver_v1.9.3-GA.zip.sha2_256 |
AirID SDK for Android | AirID SDK for Android | 1.9.2-GA | - Analyze code with regards to initial pairing and LTK/SK creation to make initial LTK key agreement more robust against LTK and SK negotiation failures with AirID1 devices.
- Analyze and test code with regards to time intervals to eliminate AirID reader stuck on "not bonded yet".
- Test and change the time intervals and delays on Bluetooth connection to make the connection more stable.
- Set the key remotely from the app for saving LTKs is available. (Optional)
| Android 8 upwards (API 26); Android Studio 3.4.1 | | |
AirID SDK for Android | AirID SDK for Android | 1.8.6 | Bugfixes - handling of AirID no random number
- disconnect after card reset
- loop after force AES-256 mode is enabled
- AirID2 discovery and pairing
| Android 4.4 upwards | | |