Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 32 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,10 @@ DataWedge.addListener('scan', event => {
* [`disableScanner()`](#disablescanner)
* [`startScanning()`](#startscanning)
* [`stopScanning()`](#stopscanning)
* [`isScannerAvailable()`](#isscanneravailable)
* [`addListener('scan', ...)`](#addlistenerscan-)
* [`__registerReceiver()`](#__registerreceiver)
* [`__enumerateScanners()`](#__enumeratescanners)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)

Expand Down Expand Up @@ -139,6 +141,21 @@ Broadcasts intent action with `.SOFT_SCAN_TRIGGER` extra set to `STOP_SCANNING`
--------------------


### isScannerAvailable()

```typescript
isScannerAvailable() => Promise<boolean>
```

Returns boolean if scanner is connected

**Returns:** <code>Promise&lt;boolean&gt;</code>

**Since:** 0.1.3

--------------------


### addListener('scan', ...)

```typescript
Expand Down Expand Up @@ -167,14 +184,28 @@ Listen for successful barcode readings
__registerReceiver() => Promise<void>
```

Internal method to register intent broadcast receiver
Internal method to register intent broadcast receiver
THIS METHOD IS FOR INTERNAL USE ONLY

**Since:** 0.1.3

--------------------


### __enumerateScanners()

```typescript
__enumerateScanners() => Promise<void>
```

Internal method to enumerate through the receivers
THIS METHOD IS FOR INTERNAL USE ONLY

**Since:** 0.1.4

--------------------


### Interfaces


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,13 @@ public Intent stopScanning() {

return intent;
}

public Intent enumerateScanners(){
Intent intent = new Intent();
intent.setAction("com.symbol.datawedge.api.ACTION");
intent.putExtra("com.symbol.datawedge.api.ENUMERATE_SCANNERS", "");

return intent;
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
import android.content.ActivityNotFoundException;

import android.util.Log;
import android.os.Bundle;

import java.util.ArrayList;


@CapacitorPlugin(name = "DataWedge")
Expand Down Expand Up @@ -66,13 +69,13 @@ public void disableScanner(PluginCall call) {

@PluginMethod
public void startScanning(PluginCall call) {
Intent intent = implementation.startScanning();
Intent intent = implementation.startScanning();

try {
try {
broadcast(intent);
} catch (ActivityNotFoundException e) {
} catch (ActivityNotFoundException e) {
call.reject("DataWedge is not installed or not running");
}
}
}

@PluginMethod
Expand All @@ -87,7 +90,24 @@ public void stopScanning(PluginCall call) {
}

@PluginMethod
public void __registerReceiver(PluginCall call) {
public boolean isScannerAvailable(PluginCall call) {
return isDeviceAvailable;
}


@PluginMethod
public void __enumerateScanners(PluginCall call) {
Intent intent = implementation.enumerateScanners();

try {
broadcast(intent);
} catch(ActivityNotFoundException e) {
call.reject("DataWedge is not installed or not running");
}
}

@PluginMethod
public void __registerReceiver(PluginCall call) {
if (isReceiverRegistered) return;

Context context = getBridge().getContext();
Expand All @@ -105,6 +125,8 @@ private void broadcast(Intent intent) {
context.sendBroadcast(intent);
}

private static final String TAG = "MyActivity";
public boolean isDeviceAvailable = false;
private boolean isReceiverRegistered = false;
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
Expand All @@ -113,6 +135,30 @@ public void onReceive(Context context, Intent intent) {

if (!action.equals(DataWedge.DATAWEDGE_INPUT_FILTER)) return;

if(action.equals("com.symbol.datawedge.api.RESULT_ACTION")){
//
// enumerate scanners
//
if(intent.hasExtra("com.symbol.datawedge.api.RESULT_ENUMERATE_SCANNERS")) {
ArrayList<Bundle> scannerList = (ArrayList<Bundle>) intent.getSerializableExtra("com.symbol.datawedge.api.RESULT_ENUMERATE_SCANNERS");
if((scannerList != null) && (scannerList.size() > 0)) {
for (Bundle bunb : scannerList){
String[] entry = new String[4];
entry[0] = bunb.getString("SCANNER_NAME");
entry[1] = bunb.getBoolean("SCANNER_CONNECTION_STATE")+"";
entry[2] = bunb.getInt("SCANNER_INDEX")+"";

entry[3] = bunb.getString("SCANNER_IDENTIFIER");

Log.d(TAG, "Scanner:" + entry[0] + " Connection:" + entry[1] + " Index:" + entry[2] + " ID:" + entry[3]);
if(entry[1] == "true") {
isDeviceAvailable = true;
}
}
}
}
}

try {
String data = intent.getStringExtra("com.symbol.datawedge.data_string");

Expand Down
47 changes: 31 additions & 16 deletions src/definitions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { PluginListenerHandle } from '@capacitor/core';
export interface ScanListenerEvent {
/**
* Data of barcode
*
*
* @since 0.1.0
*/
data: string;
Expand All @@ -12,12 +12,11 @@ export interface ScanListenerEvent {
export type ScanListener = (state: ScanListenerEvent) => void;

export interface DataWedgePlugin {

/**
* Enables DataWedge
*
* Broadcasts intent action with `.ENABLE_DATAWEDGE` extra set to `true`
*
* Broadcasts intent action with `.ENABLE_DATAWEDGE` extra set to `true`
*
* @since 0.0.3
*/
enable(): Promise<void>;
Expand All @@ -26,7 +25,7 @@ export interface DataWedgePlugin {
* Disables DataWedge
*
* Broadcasts intent action with `.ENABLE_DATAWEDGE` extra set to `false`
*
*
* @since 0.0.3
*/
disable(): Promise<void>;
Expand All @@ -35,7 +34,7 @@ export interface DataWedgePlugin {
* Enables physical scanner
*
* Broadcasts intent action with `.SCANNER_INPUT_PLUGIN` extra set to `ENABLE_PLUGIN`
*
*
* @since 0.0.3
*/
enableScanner(): Promise<void>;
Expand All @@ -44,7 +43,7 @@ export interface DataWedgePlugin {
* Disables physical scanner
*
* Broadcasts intent action with `.SCANNER_INPUT_PLUGIN` extra set to `DISABLE_PLUGIN`
*
*
* @since 0.0.3
*/
disableScanner(): Promise<void>;
Expand All @@ -68,23 +67,39 @@ export interface DataWedgePlugin {
stopScanning(): Promise<void>;

/**
* Listen for successful barcode readings
*
* ***Notice:*** Requires intent action to be set to `com.capacitor.datawedge.RESULT_ACTION` in current DataWedge profile (it may change in the future)
*
* @since 0.1.0
*/
* Returns boolean if scanner is connected
*
* @since 0.1.3
*/
isScannerAvailable(): Promise<boolean>;

/**
* Listen for successful barcode readings
*
* ***Notice:*** Requires intent action to be set to `com.capacitor.datawedge.RESULT_ACTION` in current DataWedge profile (it may change in the future)
*
* @since 0.1.0
*/
addListener(
eventName: 'scan',
listenerFunc: ScanListener
listenerFunc: ScanListener,
): Promise<PluginListenerHandle> & PluginListenerHandle;

/**
* Internal method to register intent broadcast receiver
* Internal method to register intent broadcast receiver
* THIS METHOD IS FOR INTERNAL USE ONLY
*
*
* @since 0.1.3
* @private
*/
__registerReceiver(): Promise<void>;

/**
* Internal method to enumerate through the receivers
* THIS METHOD IS FOR INTERNAL USE ONLY
*
* @since 0.1.4
* @private
*/
__enumerateScanners(): Promise<void>;
}
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const DataWedge = registerPlugin<DataWedgePlugin>('DataWedge', {

if (Capacitor.isNativePlatform()) {
DataWedge.__registerReceiver();
DataWedge.__enumerateScanners();
}

export * from './definitions';
Expand Down
8 changes: 8 additions & 0 deletions src/web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,15 @@ export class DataWedgeWeb extends WebPlugin implements DataWedgePlugin {
throw 'DataWedge is not supported on web';
}

async isScannerAvailable(): Promise<boolean> {
throw 'DataWedge is not supported on web';
}

async __registerReceiver(): Promise<void> {
// no-op
}

async __enumerateScanners(): Promise<void> {
//no-op
}
}