Releases: enioka-Haute-Couture/enioka_scan
2.3.2
This is a maintenance release. All 2.3.x users should update to this version. There are no breaking changes.
Camera scanner:
- Camera V2 view now processes barcodes better in portrait mode (used to be quite hard compared to V1).
- Camera V2 now truly targets barcode inside the targeting view (used to be a little off when the targeting rectangle was all on top or bottom of the view)
- Camera V2 now uses adaptive resolution as for V1 (was initially left to do for next major version)
- Added view parameter
useAdaptiveResolution
to enable or disable the automatic search for the best camera resolution. Default is on, as it used to be. If disabled, the highest resolution found is used. - Added view parameter
storePreferredResolution
to enable the storage of the best camera resolution found (it speeds later application starts). Default is enabled as before. - Added view parameter
maxResolutionY
to limit the available camera resolutions to the ones below or equal this line number. Default is 1080. - Added view parameter
maxDistortionRatio
to limit the available camera resolutions to the ones which x/y ratio is near the view ratio. Default is 0.3 as before. (meaning if the view is a square, ratio 1, we will consider resolutions with a x/y ratio from 0.7 to 1.3) - Added view parameter
previewRatioMode
, to either add black bars to the camera preview to respect the source ratio, or to stretch the preview in order to fill the space. Default is to stretch as before.
Misc
- Doc was updated with latest parameters
2.3.1
This is a maintenance release. All 2.3.x users should update to this version. There are no breaking changes.
Camera scanner:
- fixed a regression that failed to reinitialise the camera after some lifecycle events such as sleep
- drastically lowered memory requirements when using Camera V2 API
- for extensibility, future barcode analyzers can no longer crash the process
M3 provider:
- this provider is now published on Maven Central with the others
Koamtac provider:
- this provider is now published on Maven Central with the others
All open source Bluetooth SPP providers:
- added permission check for newer (finer grained) BT permissions
Build:
- Build SDK version was updated to 33
2.3.0
(Since 2.2)
This release is mainly an overhaul of the camera management, introducing the usage of more recent Android APIs. Many usability options were also introduced in this release.
It contains no breaking changes (from previous 2.x releases). However, some defaut configurations have changed and the release notes should be read carefully to adapt your configuration if needed.
Work on Camera scanner:
- When no hardware scanner is available, we can now use Camera2 compatible cameras in addition to the already present Camera1. The choice between camera1 and 2 is automatic. It can also be forced with a view parameter. Both versions have the same functionalities.
- Added multiple options (XML attributes) to the camera view, see documentation.
- Targeting view (the rectangle) can now be locked in place (it is still dragable by default)
- Targeting view color can be changed
- Targeting view stroke width can be changed
- The reader engine (ZBar or ZXing) can be chosen
- The Camera API version can be forced (should only be used for debugging purposes)
- Default targeting rectangle is now centered
Work on the scanner management service:
- Providers that use bluetooth are now disabled by default when using the service. To enable them, use startup options. (why? because BT search is always very long, and you should not have to suffer a long search by default)
- Providers that use intent services (locally installed device-specific services) are still enabled by default, but can be disabled with a startup option when using the service
- A new helper was created to reduce boilerplate code when binding the service at the app level (
com.enioka.scanner.service.ScannerServiceBinderHelper
)
Work on the ScannerCompatActivity activity:
- Added more access to the internals of the scanning activity: access to service (and therefore scanners), button IDs...
- Intent & BT scanners are now disabled by default in the main activity (new scanner search options, see service changes as it is the same)
- Laser scanners are now always resumed on ScannerCompatActivity initial creation
- Automatic toggle between laser and camera scanners in ScannerCompatActivity was fixed in multiple cases
Providers:
- EMDK (Zebra) provider was updated with latest driver.
- EMDK (Zebra) provider is now compatible with Android API level 30+
- EMDK (Zebra) provider no longer writes a warning on each scan in the log
- Zebra Bluetooth provider (using official driver, not provided) can now detect if the driver is present or not and fail gracefuly if not.
- The Zebra closed source provider (it contains both EMDK & bluetooth) is now also published on Maven Central (
com.enioka.scanner:provider-cs-zebra:2.3.0
). - The Honeywell AIDC closed source provider is now also published on Maven Central (
com.enioka.scanner:provider-cs-honeywell:2.3.0
).
Misc:
- Build Gradle plugin was updated to latest version. Developpers must now use JDK 17+.
- Some of our libraries now have less (more granular) dependencies. JCenter is no longer needed.
- The documentation was updated with the new options. There is still work to do in that area, including providing samples of the most common use cases.
2.2.0
- Added access to the "raw" barcode data - without trimming carriage returns and the like. This is in addition to the existing trimmed data.
- Added AZTEC symbology to Honeywell provider
2.1.0
- Add AZTEC symbology to Zebra devices and SPA43
- Fix crash caused by changing symbologies via scanning a specific barcode on ZebraOSS SDK
2.0.0
Added
LaserScanner
was expanded to give access to the cache of discovered providers and the option to re-discover them:discoverProviders()
getProviderCache()
ScannerServiceApi
methods to expand control on the scanner search, lifecycle and client hooks:unregisterClient()
restartProviderDiscovery()
getAvailableProviders()
updateScannerSearchOptions()
ScannerSearchOptions
methods to simplify manipulating intent extras from the service API:fromIntentExtras()
toIntentExtras()
ScannerSearchOptions
options to decide whether the service should start searching for scanners on bind or not- Most (if not all) callback interfaces now have a Proxy implementation that centralize jumps to the UI thread:
ProviderDiscoveredCallback
ScannerCommandCallback
ScannerConnectionHandler
ScannerDataCallback
ScannerInitCallback
ScannerStatusCallback
- New and updated scanner SDKs:
- Zebra: rework of the existing OSS driver for Zebra, fixing mistakes in the protocol and adding bases for future BLE support (not yet tested)
- Athesi E5L (model RD50TE): add OSS driver, different from the SPA43LTE model
- Honeywell EDA52: add OSS driver, device also compatible with the old non-OSS driver
- The demo application (
demoscannerapp/
) was expanded to include aSettings
activity, allowing to tune scanner search options and showcasing the different filters available. - Javadoc where it was missing
- Many tests !
Changed
- Project structure was updated to be easier to navigate, most notably the
api
andbt
(bluetooth) packages README
was updated with a more accurate compatibility matrix and links to mentionned classesScannerForeground
andScannerBackground
were merged into theScanner
interface which now regroups all scanner implementationsForegroundScannerClient
andBackgroundScannerClient
were merged intoScannerClient
interface, this is the interface theScannerService
user will need to implement to hook itself to service callbacksScanner
methods are now regrouped by feature category into subinterfaces instead of being directly available with potentially no effect, and a method is available for each feature to cast the scanner into the appropriate interface if the feature is available, ornull
if it is not available:Scanner.WithBeepSupport
andgetBeepSupport()
for beep-related commandsScanner.WithTriggerSupport
andgetTriggerSupport()
for software-controlled triggersScanner.WithIlluminationSupport
andgetIlluminationSupport()
for flashlight-style illuminationScanner.WithLedSupport
andgetLedSupport()
for LED controlScanner.WithInventorySupport
andgetInventorySupport()
for inventory-related information
StatusChangedCallback
was reworked with localized messages and a set list of available statuses, making it easier to handle status changes.
Removed
- Library implementation of HID keyboards, the default android support is deemed sufficient
ScannerServiceAPI
methods that were not related to the scanner's lifecycle:anyScannerSupportsIllumination()
anyScannerHasIllumination()
toggleIllumination()
beep()
ledColorOn()
ledColorOff()
getFirstScannerStatus()
- Many bugs !
1.2.0
Added:
- option to force the refresh of a device characteristics instead of getting data from local cache.
Changed:
- Zebra BT scanners (with the OSS driver, not the Zebra SDK) now use picklist mode by default.
1.1.1
This is first public release of the library after many years behind closed doors!
The aar is available here on GitHub or in Maven Central with coordinates com.enioka.scanner:scanner:1.1.1:aar
(do remember to specify mavenCentral()
inside the Gradle build file repositories
section)