@simplymobile/capacitor-zebra-rfid
v7.1.3
Published
Use Zebra's API3 to read data from RFID.
Readme
@simplymobile/capacitor-zebra-rfid
Use Zebra's API3 to read TagId and locate it using RFID. Tested on MC3300X.
Install
npm install @simplymobile/capacitor-zebra-rfid
npx cap syncUpdate your android\app\build.gradle file to include the following:
dependencies {
...
implementation fileTree(include: ['*.aar'], dir: 'libs')
...
}Plugin automatically copies the required native libraries to your Android project after running npx cap sync.
API
connectToReader()disconnectFromReader()isConnected()getReadersInfo()startScanning()startLocatingTag(...)stop()getCurrentMode()addListener('onTagRead', ...)addListener('onTagProximity', ...)addListener('triggerState', ...)removeAllListeners()- Interfaces
- Enums
connectToReader()
connectToReader() => Promise<ConnectedState>Returns: Promise<ConnectedState>
disconnectFromReader()
disconnectFromReader() => Promise<ConnectedState>Returns: Promise<ConnectedState>
isConnected()
isConnected() => Promise<ConnectedState>Returns: Promise<ConnectedState>
getReadersInfo()
getReadersInfo() => Promise<ReadersInfo>Returns: Promise<ReadersInfo>
startScanning()
startScanning() => Promise<ScanningState>Returns: Promise<ScanningState>
startLocatingTag(...)
startLocatingTag(options: LocateOptions) => Promise<ScanningState>| Param | Type |
| ------------- | ------------------------------------------------------- |
| options | LocateOptions |
Returns: Promise<ScanningState>
stop()
stop() => Promise<StopResult>Returns: Promise<StopResult>
getCurrentMode()
getCurrentMode() => Promise<ScanningState>Returns: Promise<ScanningState>
addListener('onTagRead', ...)
addListener(eventName: 'onTagRead', listenerFunc: (tagData: TagData) => void) => Promise<PluginListenerHandle>| Param | Type |
| ------------------ | ----------------------------------------------------------------- |
| eventName | 'onTagRead' |
| listenerFunc | (tagData: TagData) => void |
Returns: Promise<PluginListenerHandle>
addListener('onTagProximity', ...)
addListener(eventName: 'onTagProximity', listenerFunc: (tagData: TagProximity) => void) => Promise<PluginListenerHandle>| Param | Type |
| ------------------ | --------------------------------------------------------------------------- |
| eventName | 'onTagProximity' |
| listenerFunc | (tagData: TagProximity) => void |
Returns: Promise<PluginListenerHandle>
addListener('triggerState', ...)
addListener(eventName: 'triggerState', listenerFunc: (state: TriggerState) => void) => Promise<PluginListenerHandle>| Param | Type |
| ------------------ | ------------------------------------------------------------------------- |
| eventName | 'triggerState' |
| listenerFunc | (state: TriggerState) => void |
Returns: Promise<PluginListenerHandle>
removeAllListeners()
removeAllListeners() => Promise<void>Interfaces
ConnectedState
| Prop | Type |
| --------------- | -------------------- |
| connected | boolean |
ReadersInfo
| Prop | Type |
| ------------- | --------------------------- |
| readers | ReaderDevice[] |
ReaderDevice
| Prop | Type |
| ---------- | ------------------- |
| name | string |
ScanningState
| Prop | Type |
| ---------- | ----------------------------------------------------- |
| mode | ScanningMode |
LocateOptions
| Prop | Type |
| ----------- | ------------------- |
| tagId | string |
StopResult
| Prop | Type |
| -------- | -------------------- |
| ok | boolean |
PluginListenerHandle
| Prop | Type |
| ------------ | ----------------------------------------- |
| remove | () => Promise<void> |
TagData
| Prop | Type |
| ---------- | ------------------- |
| id | string |
| rssi | number |
TagProximity
| Prop | Type |
| --------------- | ------------------- |
| id | string |
| proximity | number |
TriggerState
| Prop | Type |
| --------------- | -------------------- |
| pressed | boolean |
| errorCode | string |
Enums
ScanningMode
| Members | Value |
| -------------- | --------------------- |
| SCANNING | 'scan' |
| LOCATING | 'locate' |
Example usage
@Injectable({
providedIn: 'root',
})
export class RFIDService {
public async init(): Promise<void> {
await this.configScanner();
}
public async destroy(): Promise<void> {
await ZebraRfid.removeAllListeners();
await ZebraRfid.disconnectFromReader();
}
public async locateTag(tagId: string): Promise<void> {
await ZebraRfid.startLocatingTag({ tagId });
}
public async scanForNewTags(): Promise<void> {
await ZebraRfid.startScanning();
}
public async getReaderMode(): Promise<void> {
const result = await ZebraRfid.getCurrentMode();
console.log('current mode', result.mode);
}
private async configScanner(): Promise<void> {
const res = await ZebraRfid.connectToReader();
await ZebraRfid.startScanning();
await ZebraRfid.addListener('triggerState', async (data) => {
console.log('is trigger pressed', data.pressed);
if (data.errorCode != null) {
console.warn(`Error accessing reader: ${data.errorCode}`);
}
});
await ZebraRfid.addListener('onTagRead', (data) => {
console.log('found new tag', data.id);
});
await ZebraRfid.addListener('onTagProximity', (data) => {
console.log(`proximity to tag: ${data.id}`, data.proximity);
});
}
}Changelog
7.1.2
- Fix errors
7.1.1
- Fix
disconnectFromReader
7.1.0
- Restructured plugin, added option to locate TAG
7.0.3
- Fix running on a non-Zebra device
7.0.2
- Added script to copy libs folder
- Updated README with instructions for Android build
7.0.1
- Fixed missing libs folder
7.0.0
- Initial release
