mirror of
https://github.com/inventree/inventree-app.git
synced 2026-10-07 07:41:47 +00:00
Add intent wedge scanner, MDM support for Android (#863)
Add Android intent wedge scanner support with auto configuration for supported Zebra and Datalogic devices. Intent wedge scans can be done without pressing the scan button first. Adds the ability for an MDM server to push settings on Android.
This commit is contained in:
1 parent
2cc5d37f71
commit
ca655f36fe
12 files changed
+1114
-1
No files matched your search
@@ -18,6 +18,7 @@ import "package:inventree/api.dart";
|
||||
import "package:inventree/l10.dart";
|
||||
|
||||
import "package:inventree/barcode/camera_controller.dart";
|
||||
import "package:inventree/barcode/intent_controller.dart";
|
||||
import "package:inventree/barcode/wedge_controller.dart";
|
||||
import "package:inventree/barcode/controller.dart";
|
||||
import "package:inventree/barcode/handler.dart";
|
||||
@@ -68,6 +69,53 @@ Future<void> barcodeFailure(String msg, dynamic extra) async {
|
||||
);
|
||||
}
|
||||
|
||||
void initGlobalIntentListener() {
|
||||
bool _processing = false;
|
||||
|
||||
datawedgeStream.listen((event) async {
|
||||
if (intentScannerActive) return;
|
||||
if (_processing) return;
|
||||
|
||||
_processing = true;
|
||||
|
||||
try {
|
||||
final int controllerType =
|
||||
await InvenTreeSettingsManager().getValue(
|
||||
INV_BARCODE_SCAN_TYPE,
|
||||
BARCODE_CONTROLLER_CAMERA,
|
||||
)
|
||||
as int;
|
||||
if (controllerType != BARCODE_CONTROLLER_INTENT) return;
|
||||
|
||||
if (!InvenTreeAPI().isConnected()) return;
|
||||
|
||||
String barcode = "";
|
||||
if (event is Map) {
|
||||
final map = Map<String, dynamic>.from(event);
|
||||
barcode = (map["data"] ?? "").toString();
|
||||
} else if (event is String) {
|
||||
barcode = event;
|
||||
}
|
||||
|
||||
if (barcode.isEmpty) return;
|
||||
|
||||
if (!OneContext.hasContext) return;
|
||||
|
||||
await OneContext().navigator.push(
|
||||
PageRouteBuilder(
|
||||
pageBuilder: (context, _, _) => IntentBarcodeController(
|
||||
BarcodeScanHandler(),
|
||||
initialBarcode: barcode,
|
||||
),
|
||||
opaque: false,
|
||||
),
|
||||
);
|
||||
} finally {
|
||||
_processing = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Launch a barcode scanner with a particular context and handler.
|
||||
*
|
||||
@@ -93,6 +141,8 @@ Future<Object?> scanBarcode(
|
||||
as int;
|
||||
|
||||
switch (barcodeControllerType) {
|
||||
case BARCODE_CONTROLLER_INTENT:
|
||||
controller = IntentBarcodeController(handler);
|
||||
case BARCODE_CONTROLLER_WEDGE:
|
||||
controller = WedgeBarcodeController(handler);
|
||||
case BARCODE_CONTROLLER_CAMERA:
|
||||
|
||||
Reference in new issue
Block a user