PDA 的 Action 和 DataKey 怎么找?不知道广播参数时这样调试最快

2 阅读2分钟

做 PDA 广播扫码时,最让人头疼的问题经常不是代码,而是:

我根本不知道这台 PDA 的 Action 和 DataKey 是什么。

厂家文档找不到,设备又不是主流型号。

怎么办?

其实可以直接调试。

一、Action 是什么?****

可以把 Action 理解为广播的“频道名称”。

例如:

com.scanner.broadcast

或者:

android.intent.action.SCAN_RESULT

你的 App 只有监听正确 Action,才能收到 PDA 发过来的扫码数据。

二、DataKey 是什么?****

广播收到以后,条码通常放在 Intent Extra 里面。

例如:

barcode

或者:

data

scanData

SCAN_BARCODE1

decode_data

这个 Key 就可以理解成 DataKey。

三、最靠谱的办法:不要猜****

如果设备厂家文档完整,直接看官方文档当然最好。

但是现实项目里经常遇到:

二手 PDA

定制 PDA

OEM PDA

老设备

没有开发文档

这种情况。

这时候我一般会做一个:

PDA 扫码调试页。

页面实时显示:

Action

Extras Key

Extras Value

时间

原始数据

扫码一次,就把收到的信息全部显示出来。

例如:

Action:

com.android.server.scannerservice.broadcast

 

Extras:

barcode_string = 6923450657713

barcode_type = EAN13

那么基本立刻就能确定:

Action = com.android.server.scannerservice.broadcast

 

DataKey = barcode_string

四、为什么建议项目里保留一个硬件测试中心?****

如果系统以后可能适配不同 PDA,我甚至建议正式项目里保留:

硬件测试

入口。

里面可以测试:

扫码

设备型号

Android 版本

Action

DataKey

扫码原始结果

连续扫码

现场换设备以后,不需要重新写一个测试 APK。

直接打开测试页面就知道:

这台 PDA 到底发了什么。

五、企业 PDA 项目不要把参数写死在页面****

更好的设计是:

PDA Profile

例如:

设备:

UROVO

 

模式:

Broadcast

 

Action:

xxx.xxx.SCAN

 

DataKey:

barcode

换设备后只需要换 Profile。

业务层仍然只接收统一的:

scan(code)

这样维护成本会低很多。 插件地址:ext.dcloud.net.cn/plugin?id=2…