diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index f0bb6afc..9381c185 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -42,8 +42,8 @@ jobs:
LIB_VERSION: ${{ steps.get_version.outputs.VERSION }}
GH_DRIVER_REPOSITORY_USERNAME: ${{ secrets.GH_DRIVER_REPOSITORY_USERNAME }}
GH_DRIVER_REPOSITORY_TOKEN: ${{ secrets.GH_DRIVER_REPOSITORY_TOKEN }}
- - name: Rename the AAR file for GitHub release upload
- run: mv enioka_scan/build/outputs/aar/enioka_scan-release.aar enioka_scan/build/outputs/aar/enioka_scan-${{ steps.get_version.outputs.VERSION }}.aar
+# - name: Rename the AAR file for GitHub release upload
+# run: mv enioka_scan/build/outputs/aar/enioka_scan-release.aar enioka_scan/build/outputs/aar/enioka_scan-${{ steps.get_version.outputs.VERSION }}.aar
- name: Restore json key
run: echo "${{ secrets.GOOGLE_API_PUB_JSON_BASE64 }}" | base64 --decode > ${{ github.workspace }}/service-account.json
- name: Restore keystore
@@ -54,14 +54,13 @@ jobs:
KEYSTORE_PASSWORD: ${{ secrets.GOOGLE_KEYSTORE_PASSWORD }}
SIGNKEY_PASSWORD: ${{ secrets.GOOGLE_SIGNKEY_PASSWORD }}
KEY_ALIAS: ${{ secrets.GOOGLE_SIGNKEY_ALIAS }}
- - name: Upload aab as artefact
- uses: actions/upload-artifact@v4
- with:
- name: app-release
- path: ${{ github.workspace }}/demoscannerapp/build/outputs/bundle/release/demoscannerapp-release.aab
+ - name: Rename the AAB file for GitHub release upload
+ run: mv demoscannerapp/build/outputs/bundle/release/demoscannerapp-release.aab demoscannerapp/build/outputs/bundle/release/enioka_scan-${{ steps.get_version.outputs.VERSION }}.aab
- name: Create a GitHub release with the AAR file as an asset
uses: softprops/action-gh-release@v2
with:
name: ${{ steps.get_version.outputs.VERSION }}
- files: enioka_scan/build/outputs/aar/enioka_scan-${{ steps.get_version.outputs.VERSION }}.aar
+ files: |
+# enioka_scan/build/outputs/aar/enioka_scan-${{ steps.get_version.outputs.VERSION }}.aar
+ demoscannerapp/build/outputs/bundle/release/enioka_scan-${{ steps.get_version.outputs.VERSION }}.aab
token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index bd273c66..77e9de2e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,5 +9,7 @@
/.idea/libraries
.DS_Store
**/build/
+**/debug/
+**/release/
/captures
.externalNativeBuild
diff --git a/README.md b/README.md
index ae610947..47f51911 100644
--- a/README.md
+++ b/README.md
@@ -29,12 +29,12 @@ repositories {
mavenCentral()
}
dependencies {
- implementation 'com.enioka.scanner:scanner:2.4.1:aar'
+ implementation 'com.enioka.scanner:enioka-scan-core:3.0.0:aar'
}
```
-More artefacts may be required depending on your devices, the full list and compatibility matrix are
-available in the documentation.
+More artefacts are be required to add compatibility to your devices, the full list and compatibility
+matrix are available in the documentation.
## Documentation
diff --git a/build.gradle b/build.gradle
index accad77d..8fd4c1f0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.3.2'
+ classpath 'com.android.tools.build:gradle:8.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/demoscannerapp/build.gradle b/demoscannerapp/build.gradle
index 2566f5fe..121fe665 100644
--- a/demoscannerapp/build.gradle
+++ b/demoscannerapp/build.gradle
@@ -5,19 +5,13 @@ android {
defaultConfig {
applicationId "com.enioka.scanner.demoscannerapp"
minSdkVersion 19
- targetSdkVersion 33
- versionCode 6
- versionName "1.0"
+ targetSdkVersion 34
+ versionCode 7
+ versionName "3.0.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
- debug {
- storeFile file("debug.keystore")
- storePassword System.getenv("KEYSTORE_PASSWORD")
- keyAlias System.getenv("KEY_ALIAS")
- keyPassword System.getenv("SIGNKEY_PASSWORD")
- }
release {
storeFile file("debug.keystore")
storePassword System.getenv("KEYSTORE_PASSWORD")
@@ -35,7 +29,6 @@ android {
applicationIdSuffix ".release"
}
debug {
- signingConfig signingConfigs.debug
debuggable true
applicationIdSuffix ".debug"
}
diff --git a/demoscannerapp/playstore/attributions.txt b/demoscannerapp/playstore/attributions.txt
new file mode 100644
index 00000000..f16275a0
--- /dev/null
+++ b/demoscannerapp/playstore/attributions.txt
@@ -0,0 +1,2 @@
+- App Icon by Ecommdesign (https://iconscout.com/free-icon/barcode-159)
+- Feature Graphic generated with Hotpot (https://hotpot.ai/templates/google-play-feature-graphic/11)
diff --git a/demoscannerapp/playstore/frature_graphic.png b/demoscannerapp/playstore/frature_graphic.png
new file mode 100644
index 00000000..f9072295
Binary files /dev/null and b/demoscannerapp/playstore/frature_graphic.png differ
diff --git a/demoscannerapp/playstore/full_description.txt b/demoscannerapp/playstore/full_description.txt
new file mode 100644
index 00000000..34f4d433
--- /dev/null
+++ b/demoscannerapp/playstore/full_description.txt
@@ -0,0 +1,20 @@
+This application is a demo for enioka Scan, a library that makes the integration of all barcode scanners easy in any Android application, avoiding vendor lock-in and lowering the cost of advanced scanner integration.
+
+It is compatible with a wide variety of scanning devices, integrated or external, from different vendors such as Zebra, Honeywell, Athesi and more.
+
+When there are no compatible hardware devices available, the library provides a camera reader based on ZBar (default) or ZXing.
+
+Through a common abstraction, it provides access to the following methods (provided the hardware supports them):
+
+- press/release the scanner's trigger
+- pause/resume scanning abilities
+- disconnect/reconnect scanners
+- enable/disable illumination from the scanner
+- enable/disable colored LEDs
+- set scanner enabled symbologies
+
+Finally, it provides a ready to use Service that handles scanner lifecycles, as well as a template Activity, allowing you to use scanners in a matter of minutes.
+
+This app includes all of the library's compatibility modules.
+
+Check out the library and its source code on GitHub: https://github.com/enioka-Haute-Couture/enioka_scan
\ No newline at end of file
diff --git a/demoscannerapp/playstore/icon.png b/demoscannerapp/playstore/icon.png
new file mode 100644
index 00000000..0f200228
Binary files /dev/null and b/demoscannerapp/playstore/icon.png differ
diff --git a/demoscannerapp/playstore/phone_screenshots/camera_activity.png b/demoscannerapp/playstore/phone_screenshots/camera_activity.png
new file mode 100644
index 00000000..1f581462
Binary files /dev/null and b/demoscannerapp/playstore/phone_screenshots/camera_activity.png differ
diff --git a/demoscannerapp/playstore/phone_screenshots/home_activity.png b/demoscannerapp/playstore/phone_screenshots/home_activity.png
new file mode 100644
index 00000000..0cae2b79
Binary files /dev/null and b/demoscannerapp/playstore/phone_screenshots/home_activity.png differ
diff --git a/demoscannerapp/playstore/phone_screenshots/scan_activity.png b/demoscannerapp/playstore/phone_screenshots/scan_activity.png
new file mode 100644
index 00000000..ac962b08
Binary files /dev/null and b/demoscannerapp/playstore/phone_screenshots/scan_activity.png differ
diff --git a/demoscannerapp/playstore/phone_screenshots/settings_activity_1.png b/demoscannerapp/playstore/phone_screenshots/settings_activity_1.png
new file mode 100644
index 00000000..0a8c4801
Binary files /dev/null and b/demoscannerapp/playstore/phone_screenshots/settings_activity_1.png differ
diff --git a/demoscannerapp/playstore/phone_screenshots/settings_activity_2.png b/demoscannerapp/playstore/phone_screenshots/settings_activity_2.png
new file mode 100644
index 00000000..92a865b3
Binary files /dev/null and b/demoscannerapp/playstore/phone_screenshots/settings_activity_2.png differ
diff --git a/demoscannerapp/playstore/short_description.txt b/demoscannerapp/playstore/short_description.txt
new file mode 100644
index 00000000..e2221759
--- /dev/null
+++ b/demoscannerapp/playstore/short_description.txt
@@ -0,0 +1 @@
+Integration library for all your Android barcode scanner integration needs
diff --git a/demoscannerapp/src/main/AndroidManifest.xml b/demoscannerapp/src/main/AndroidManifest.xml
index b1804a54..a410e5af 100644
--- a/demoscannerapp/src/main/AndroidManifest.xml
+++ b/demoscannerapp/src/main/AndroidManifest.xml
@@ -7,7 +7,6 @@
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:hardwareAccelerated="true"
android:theme="@style/AppTheme">
diff --git a/demoscannerapp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/demoscannerapp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..90f95809
--- /dev/null
+++ b/demoscannerapp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher.png b/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher.png
index cde69bcc..fde1efda 100644
Binary files a/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher.png and b/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png b/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 00000000..90280c2a
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png b/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 00000000..5ccac1b2
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_round.png b/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 9a078e3e..00000000
Binary files a/demoscannerapp/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher.png b/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher.png
index c133a0cb..6fc11cd0 100644
Binary files a/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher.png and b/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png b/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 00000000..dd58d999
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png b/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 00000000..9ef00dee
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_round.png b/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index efc028a6..00000000
Binary files a/demoscannerapp/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher.png b/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher.png
index bfa42f0e..fbbbb7b6 100644
Binary files a/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher.png and b/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png b/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 00000000..d606d938
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png b/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 00000000..5467bc49
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 3af2608a..00000000
Binary files a/demoscannerapp/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher.png b/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 324e72cd..5c8e2abd 100644
Binary files a/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png b/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 00000000..3801f5d8
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png b/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 00000000..643f3b18
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index 9bec2e62..00000000
Binary files a/demoscannerapp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index aee44e13..75d64998 100644
Binary files a/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png b/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 00000000..f48a5f90
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png b/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 00000000..dde7f5b9
Binary files /dev/null and b/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index 34947cd6..00000000
Binary files a/demoscannerapp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/docs/api/camera.md b/docs/api/camera.md
index b51b46c5..324bee99 100644
--- a/docs/api/camera.md
+++ b/docs/api/camera.md
@@ -24,31 +24,33 @@ view refresh. You can force a refresh by pausing and resuming the camera.
:param AspectRatioMode mode: The mode to use for filling the camera preview. Can be one of the
following values:
- - `0`: `fillWithCrop`: The preview will be scaled to fit the picture, cropping the sides if
- needed. The aspect ratio of the preview will be kept.
- - `1`: `fillWithBlackBars`: The preview will be scaled to fit the picture, with black bars on
- the sides if needed. The aspect ratio of the preview will be kept.
- - `2`: `fillWithStretch`: The preview will fill the available space, by squashing or stretching
- the preview if needed. The aspect ratio of the preview can be altered.
-
-.. image:: /pictures/crop.png
-:width: 400
-:alt: fillWithCrop
+- `0`: `fillWithCrop`: The preview will be scaled to fit the picture, cropping the sides if
+ needed. The aspect ratio of the preview will be kept.
+- `1`: `fillWithBlackBars`: The preview will be scaled to fit the picture, with black bars on
+ the sides if needed. The aspect ratio of the preview will be kept.
+- `2`: `fillWithStretch`: The preview will fill the available space, by squashing or stretching
+ the preview if needed. The aspect ratio of the preview can be altered.
+:::
-Example of a preview with the `fillWithCrop` mode.
+Example of a preview with the `fillWithCrop` mode:
-.. image:: /pictures/black_bars.png
+:::{image} /pictures/crop.png
:width: 400
-:alt: fillWithBlackBars
+:alt: Example of a preview with the `fillWithCrop` mode.
+:::
-Example of a preview with the `fillWithBlackBars` mode.
+Example of a preview with the `fillWithBlackBars` mode:
-.. image:: /pictures/stretch.png
+:::{image} /pictures/black_bars.png
:width: 400
-:alt: fillWithStretch
+:alt: Example of a preview with the `fillWithBlackBars` mode.
+:::
-Example of a preview with the `fillWithStretch` mode.
+Example of a preview with the `fillWithStretch` mode:
+:::{image} /pictures/stretch.png
+:width: 400
+:alt: Example of a preview with the `fillWithStretch` mode.
:::
:::{method} setReaderMode(CameraReader readerMode) -> void
@@ -143,8 +145,8 @@ To use this view in your own layout, you can add the following block to its XML
the attributes to your needs:
```xml
-
+ app:useAdaptiveResolution="true" />
```
The main XML attributes are as follow:
@@ -194,12 +195,12 @@ The maximum vertical resolution of the camera preview, useful to limit performan
:::{method} app:previewRatioMode
The mode to use for filling the camera preview. Can be one of the following values:
- - `0`: `fillWithCrop`: The preview will be scaled to fit the picture, cropping the sides if
- needed. The aspect ratio of the preview will be kept.
- - `1`: `fillWithBlackBars`: The preview will be scaled to fit the picture, with black bars on
- the sides if needed. The aspect ratio of the preview will be kept.
- - `2`: `fillWithStretch`: The preview will fill the available space, by squashing or stretching
- the preview if needed. The aspect ratio of the preview can be altered.
+- `0`: `fillWithCrop`: The preview will be scaled to fit the picture, cropping the sides if
+ needed. The aspect ratio of the preview will be kept.
+- `1`: `fillWithBlackBars`: The preview will be scaled to fit the picture, with black bars on
+ the sides if needed. The aspect ratio of the preview will be kept.
+- `2`: `fillWithStretch`: The preview will fill the available space, by squashing or stretching
+ the preview if needed. The aspect ratio of the preview can be altered.
If the value of this attribute is not recognized or defined, the preview ratio mode will be set
by default to `fillWithCrop`.
@@ -263,17 +264,24 @@ The mode to use for filling the camera preview. Can be one of the following valu
:returns: A map containing the IDs of the views used by the camera scanner. May be replaced with
your own.
-Contains the following keys:
-- layout_id_camera: The ID of the layout containing the camera view.
-- camera_view_id: The ID of the camera view in the layout.
-- scanner_toggle_view_id: The ID of the view that toggles the scanner library reader.
-- scanner_toggle_pause_id: The ID of the view that toggles the pause of the scanner.
-- card_last_scan_id: ID of the card view that displays the last scan.
-- constraint_layout_id: The ID of the constraint layout inside the camera layout.
-- scanner_flashlight_id: The ID of the optional ImageButton on which to press to toggle the
-flashlight/illumination.
-- scanner_bt_provider_logs: The ID of the optional ImageButton on which to press to manually access
-available providers logs
+It contains the following values:
+- `layout_id_camera`: The ID of the layout containing the camera view.
+ Set to `R.layout.activity_main_alt`.
+- `camera_view_id`: The ID of the
+ [`CameraBarcodeScanView`](camera.md#the-camerabarcodescanview-class) inside the `layout_id_camera`
+ layout. Set to `R.id.cameraScanView`.
+- `scanner_toggle_view_id`: The ID of the optional ImageButton on which to press to toggle the
+ zxing/zbar camera scan library. Set to `R.id.scannerSwitchZxing`.
+- `scanner_toggle_pause_id`: The ID of the optional toggle button on which to press to pause/unpause
+ the scanner. Set to `R.id.scannerSwitchPause`.
+- `card_last_scan_id`: The ID of the card view that displays the last scan.
+ Set to `R.id.cardCameraLastScan`.
+- `constraint_layout_id`: The ID of the constraint layout inside the camera layout.
+ Set to `R.id.constraintLayoutMainActivity`.
+- `scanner_flashlight_id`: The ID of the optional ImageButton on which to press to toggle the
+ flashlight/illumination. Set to `R.id.scannerFlashlight`.
+- `scanner_bt_provider_logs`: The ID of the optional ImageButton on which to press to manually access
+ available providers logs. Set to `R.id.scannerBtProviderLogs`.
:::
:::{method} getCameraScanner(Context ctx, ScannerConnectionHandler handler, ScannerSearchOptions options) -> void
diff --git a/docs/api/scanner_activity.md b/docs/api/scanner_activity.md
index ddc08af7..8e273937 100644
--- a/docs/api/scanner_activity.md
+++ b/docs/api/scanner_activity.md
@@ -58,24 +58,23 @@ The hashmap containing the IDs of the views used by the camera scanner. May be r
own.
If the camera SDK is included, it will be set to a map containing the following values:
-- layout_id_camera: The ID of the layout containing the camera view
-:::{cpp:var}R.layout.activity_main_alt:::.
-- camera_view_id: The ID of the camera view in the layout :::{cpp:var}R.id.cameraScanView:::.
- It is the ID of the [`CameraBarcodeScanView`](camera.md#the-camerabarcodescanview-class) inside the
- `layout_id_camera` layout.
- :::.
-- scanner_toggle_view_id: It is the ID of the optional ImageButton on which to press to toggle the
-zxing/zbar camera scan library :::{cpp:var}R.id.scannerSwitchZxing:::.
-- scanner_toggle_pause_id: The ID of the optional toggle button on which to press to pause/unpause
-the scanner :::{cpp:var}R.id.scannerSwitchPause:::.
-- card_last_scan_id: ID of the card view that displays the last scan
-:::{cpp:var}R.id.cardCameraLastScan:::.
-- constraint_layout_id: The ID of the constraint layout inside the camera layout
-:::{cpp:var}R.id.constraintLayoutMainActivity:::.
-- scanner_flashlight_id: The ID of the optional ImageButton on which to press to toggle the
-flashlight/illumination :::{cpp:var}R.id.scannerFlashlight:::.
-- scanner_bt_provider_logs: The ID of the optional ImageButton on which to press to manually access
-available providers logs :::{cpp:var}R.id.scannerBtProviderLogs:::.
+- `layout_id_camera`: The ID of the layout containing the camera view.
+ Defaults to `R.layout.activity_main_alt`.
+- `camera_view_id`: The ID of the
+ [`CameraBarcodeScanView`](camera.md#the-camerabarcodescanview-class) inside the `layout_id_camera`
+ layout. Defaults to `R.id.cameraScanView`.
+- `scanner_toggle_view_id`: The ID of the optional ImageButton on which to press to toggle the
+ zxing/zbar camera scan library. Defaults to `R.id.scannerSwitchZxing`.
+- `scanner_toggle_pause_id`: The ID of the optional toggle button on which to press to pause/unpause
+ the scanner. Defaults to `R.id.scannerSwitchPause`.
+- `card_last_scan_id`: The ID of the card view that displays the last scan.
+ Defaults to `R.id.cardCameraLastScan`.
+- `constraint_layout_id`: The ID of the constraint layout inside the camera layout.
+ Defaults to `R.id.constraintLayoutMainActivity`.
+- `scanner_flashlight_id`: The ID of the optional ImageButton on which to press to toggle the
+ flashlight/illumination. Defaults to `R.id.scannerFlashlight`.
+- `scanner_bt_provider_logs`: The ID of the optional ImageButton on which to press to manually access
+ available providers logs. Defaults to `R.id.scannerBtProviderLogs`.
:::
:::{cpp:var} int cameraToggleId = R.id.scannerBtCamera
diff --git a/docs/dependencies.md b/docs/dependencies.md
index 5d817f54..4da6bf5d 100644
--- a/docs/dependencies.md
+++ b/docs/dependencies.md
@@ -167,6 +167,7 @@ devices.
| `provicer-os-honeywell-bt` | `BT_HoneywellOssSppProvider` | Honeywell bluetooth scanners | Honeywell Voyager 1602g | BT Classic | | Bluetooth device responds to "Get firmware" command |
| `provider-os-zebra-bt` | `BT_ZebraOssSPPProvider` | Zebra bluetooth scanners using the SSI protocol | Zebra RS5100 | BT Classic | | Bluetooth device is not BLE and responds to "CAPABILITIES_REQUEST" command |
| `provider-os-zebra-bt` | `BT_ZebraOssATTProvider` | Zebra bluetooth scanners using the SSI protocol | Zebra RS5100 | BT Low Energy | | Bluetooth device is BLE and responds to "CAPABILITIES_REQUEST" command |
+| `provider-os-zebra-dw` | `ZebraDwProvider` | Any device compatible with Zebra Datawedge | Zebra TC25, Zebra TC27 | Integrated | Zebra Datawedge service (should be preinstalled on device) | Application package `com.symbol.datawedge` exists |
| `provider-os-honeywell-integrated` | `HoneywellOssIntegratedProvider` | Honeywell integrated scanners | Honeywell EDA52 | Integrated | Honeywell service (should be preinstalled on device) | Intent `com.honeywell.decode.DecodeService` has a listener |
| `provider-cs-proglove` | `ProgloveProvider` | Proglove devices interfacing with their application | Proglove Glove Mark II | BT Low Energy | Proglove application | Application package `de.proglove.connect` exists |
| `provider-cs-honeywell` | `HONEYWELL_AIDC` | Honeywell AIDC / Intermec integrated devices | Honeywell EDA50 | Integrated | AIDC SDK, Honeywell service (should be preinstalled on device) | Intent `com.honeywell.decode.DecodeService` has a listener and AIDC SDK exists |
@@ -174,7 +175,6 @@ devices.
| `provider-cs-m3` | `M3RingScannerProvider` | M3Mobile bluetooth ring scanners | M3 Ring Scanner | BT Classic | Ring Scanner SDK, Ring Scanner application | Class `com.m3.ringscannersdk.RingScannerService` exists, application package `com.m3.ringscanner` exists, scanner device is found |
| `provider-cs-zebra` | `BtZebraProvider` | Zebra bluetooth scanners | Zebra RS6000, RS5100 | BT Classic | Zebra SDK | Class `com.zebra.scannercontrol.SDKHandler` exists and scanner device is found |
| `provider-cs-zebra` | `Zebra EMDK` | Zebra EMDK integrated scanners | Zebra TC25 | Integrated | Zebra EMDK SDK (should be preinstalled on device) | Class `com.symbol.emdk.EMDKManager` exists |
-| `provider-os-zebra-dw` | `ZebraDwProvider` | Any device compatible with Zebra Datawedge | Zebra TC25, Zebra TC27 | Integrated | Zebra Datawedge service (should be preinstalled on device) | Application package `com.symbol.datawedge` exists |
:::
diff --git a/docs/develop.md b/docs/develop.md
index 071428bf..e9a9e1c0 100644
--- a/docs/develop.md
+++ b/docs/develop.md
@@ -83,6 +83,12 @@ Once enough features or fixes are merged into `master`, a new version tag will b
repository owner/maintainer. This will trigger a GitHub Action workflow to create a release with an
artefact of the core library, and will upload all artefacts to Maven Central.
+Every tagged commit should include an increment to `demoscannerapp/build.gradle`'s `versionCode`
+value, even if the previous release was canceled. The Google Play Store console will not accept
+the re-publishing of an existing `versionCode` value, and fixing a denied version code will require
+the re-push of the release. The `versionName` value should just match the tag, and multiple releases
+can have the same `versionName`.
+
:::{warning}
The release tag ***must*** be pushed from the CLI, as a tag or release created from the
diff --git a/docs/guides/custom_layout.md b/docs/guides/custom_layout.md
index 3ffb8cdf..1c2cab39 100644
--- a/docs/guides/custom_layout.md
+++ b/docs/guides/custom_layout.md
@@ -29,19 +29,26 @@ To ensure activity is able to properly switch to the camera when needed, you sho
following view block in the `.xml` file used by `layoutIdCamera`:
```xml
-
+ app:useAdaptiveResolution="true" />
```
Should you choose a different ID for this view, remember to also change the value of the
diff --git a/docs/quickstart.md b/docs/quickstart.md
index cada8848..5a7fdf57 100644
--- a/docs/quickstart.md
+++ b/docs/quickstart.md
@@ -15,7 +15,7 @@ repositories {
mavenCentral()
}
dependencies {
- implementation 'com.enioka.scanner:scanner:2.4.1:aar'
+ implementation 'com.enioka.scanner:enioka-scan-core:3.0.0:aar'
}
```
@@ -121,7 +121,7 @@ help converting search parameters to and from those intent extras.
* `com.enioka.scanner.sdk.camera` dependencies are required to use the camera scanner, check
[library dependencies and compatibility matrix](dependencies.md).
- :::
+:::
When there is no laser scanner available, or when a button is clicked, the `ScannerCompatActivity`
activity will fallback to using the device camera (if any) to scan barcodes. This leverages two
diff --git a/enioka_scan_camera/src/main/java/com/enioka/scanner/sdk/camera/CameraProvider.java b/enioka_scan_camera/src/main/java/com/enioka/scanner/sdk/camera/CameraProvider.java
index 66af33c9..10cb1f25 100644
--- a/enioka_scan_camera/src/main/java/com/enioka/scanner/sdk/camera/CameraProvider.java
+++ b/enioka_scan_camera/src/main/java/com/enioka/scanner/sdk/camera/CameraProvider.java
@@ -26,7 +26,7 @@ public HashMap getIdResources() {
idResources.put("scanner_toggle_view_id", R.id.scannerSwitchZxing);
idResources.put("scanner_toggle_pause_id", R.id.scannerSwitchPause);
idResources.put("card_last_scan_id", R.id.cardCameraLastScan);
- idResources.put("constraint_layout_id", R.id.constraint_layout_main_activity);
+ idResources.put("constraint_layout_id", R.id.constraintLayoutMainActivity);
idResources.put("scanner_flashlight_id", R.id.scannerFlashlight);
idResources.put("scanner_bt_provider_logs", R.id.scannerBtProviderLogs);
diff --git a/enioka_scan_camera/src/main/java/com/enioka/scanner/sdk/camera/ZBarFrameAnalyser.java b/enioka_scan_camera/src/main/java/com/enioka/scanner/sdk/camera/ZBarFrameAnalyser.java
index 9aa44c9e..271a1d2f 100644
--- a/enioka_scan_camera/src/main/java/com/enioka/scanner/sdk/camera/ZBarFrameAnalyser.java
+++ b/enioka_scan_camera/src/main/java/com/enioka/scanner/sdk/camera/ZBarFrameAnalyser.java
@@ -38,8 +38,6 @@ class ZBarFrameAnalyser extends FrameAnalyser {
barcodeTypeZBar2Lib.put(Symbol.UPCE, BarcodeType.UPCE);
barcodeTypeZBar2Lib.put(Symbol.QRCODE, BarcodeType.QRCODE);
barcodeTypeZBar2Lib.put(Symbol.PDF417, BarcodeType.PDF417);
- // To be confirmed
- barcodeTypeZBar2Lib.put(Symbol.ISBN13, BarcodeType.EAN13);
barcodeTypeZBar2Lib.put(Symbol.ISBN10, BarcodeType.ISBN10);
barcodeTypeZBar2Lib.put(Symbol.CODABAR, BarcodeType.CODABAR);
diff --git a/enioka_scan_camera/src/main/res/layout/activity_camera.xml b/enioka_scan_camera/src/main/res/layout/activity_camera.xml
index 2193fb4b..17fb921f 100644
--- a/enioka_scan_camera/src/main/res/layout/activity_camera.xml
+++ b/enioka_scan_camera/src/main/res/layout/activity_camera.xml
@@ -2,7 +2,7 @@
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ee161f55..d89a903c 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Tue Sep 26 09:23:23 CEST 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists