我是靠谱客的博主 靓丽钢铁侠,这篇文章主要介绍Android 关于对RFID功能的开发记录前言开发步骤结语及注意点,现在分享给大家,希望可以做个参考。

RFID开发

  • 前言
  • 开发步骤
    • 第一步:导入libs,如图:
    • 第二步:RFID功能初始化及编写
  • 结语及注意点

前言

在项目前期的时候就一直提出要做RFID自动识别标签解放双手的想法,直到最近项目用户量上升,促使这个想法开始逐步实现,所以就有了本篇博客,记录一下开发步骤,避免以后维护迭代的时候忘记了一些关键步骤。下面进入正题,不管做什么硬件设备的集成,首先要做的就是查看相关的说明文档和操作手册,接着就是看人家Demo的运行效果结合自己项目的需求做思考。

注意:以下内容仅适用于部分硬件厂家

开发步骤

第一步:导入libs,如图:

libs文件
接着将jniLibs导入,由于项目各种jar文件和so文件的冲突问题,我将jniLibs中的so文件放在了libs下面
jniLibs文件
[如果你跟我一样将jniLibs中的文件放在了libs的话,要做的就是在build.gradle文件的android下添加如下代码:

复制代码
1
2
sourceSets { main { jniLibs.srcDirs = ['libs'] } }

]

将这些文件添加完之后不要急着去点击Make Project【小锤子】,要先在build.gradle文件中添加如下代码:

复制代码
1
2
3
4
implementation files('libs/xUtils-2.5.5.jar') implementation files('libs/jxl.jar') implementation files('libs/cw-deviceapi20190815.jar')

这个时候就可以Make Project【构建项目了】

第二步:RFID功能初始化及编写

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
private void initUHF() { try { mReader = RFIDWithUHF.getInstance(); } catch (Exception e) { showToast(e.getMessage()); } if (mReader != null) { //这里用了一个异步线程去初始化,如果不开启线程的话就会直接崩溃???? new InitTask().execute(); } }
复制代码
1
2
3
4
5
6
7
//初始化的异步任务 @Override protected Boolean doInBackground(String... params) { // TODO Auto-generated method stub return mReader.init(); }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//自动识别标签 private void readTag() { // 识别标签 if (btnStart.getText().toString().equals("开始识别")) { // 单标签循环 if (mReader.startInventoryTag(0, 0)) { btnStart.setText("停止识别"); loopFlag = true; new TagThread().start(); } else { mReader.stopInventory(); showToast("开启失败----"); } } else { // 停止识别 stopInventory(); } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
//手动识别标签 private void readTag() { // 单步 String strUII = mReader.inventorySingleTag(); if (!TextUtils.isEmpty(strUII)) { String strEPC = mReader.convertUiiToEPC(strUII); addEPCToList(strEPC, "N/A"); tvCount.setText("" + adapter.getItemCount()); } else { showToast("失败哦!"); } }

自动识别的时候开了一个异步任务实时数据更新,如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class TagThread extends Thread { @Override public void run() { String strTid; String strResult; String[] res; while (loopFlag) { res = mReader.readTagFromBuffer(); if (res != null) { strTid = res[0]; if (strTid.length() != 0 && !strTid.equals("0000000000000000") && !strTid.equals("000000000000000000000000")) { strResult = "TID:" + strTid + "n"; } else { strResult = ""; } Log.i("data", "EPC:" + res[1] + "|" + strResult); Message msg = handler.obtainMessage(); msg.obj = strResult + "EPC:" + mReader.convertUiiToEPC(res[1]) + "@" + res[2]; handler.sendMessage(msg); } } } }

在handeler中将数据添加的List集合中并展示在列表中:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void addEPCToList(String epc, String rssi) { if (!TextUtils.isEmpty(epc)) { int index = checkIsExist(epc); TestBean testBean = new TestBean(); testBean.setTagCount(String.valueOf(1)); testBean.setTagRssi(rssi); testBean.setTagUii(epc); if (index == -1) { tagList.add(testBean); recyclerView.setAdapter(adapter); tvCount.setText("" + adapter.getItemCount()); } else { int tagcount = Integer.parseInt(tagList.get(index).getTagCount(), 10) + 1; testBean.setTagCount(String.valueOf(tagcount)); tagList.set(index, testBean); } adapter.notifyDataSetChanged(); } }

到这里就完成了RFID的扫描读取功能。如图:
RFID扫描功能可做盘存

结语及注意点

1、使用前请确认您的机器已安装此模块。
2、要正常使用模块需要在libsarmeabi目录放置libDeviceAPI.so文件,同时在libs目录下放置DeviceAPIver20160728.jar文件。
3、在操作设备前需要调用 init()打开设备,使用完后调用 free() 关闭设备

RFID相关介绍文章可查看:物联网之RFID一

相关的Demo关注公众号“只会写bug的咸鱼”中,后台回复“RFID功能”获取

创作不易,不惜勿喷!

最后

以上就是靓丽钢铁侠最近收集整理的关于Android 关于对RFID功能的开发记录前言开发步骤结语及注意点的全部内容,更多相关Android内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(157)

评论列表共有 0 条评论

立即
投稿
返回
顶部