Android安卓设备如何开发读取RFID卡号

439 阅读2分钟

荣士ID-01H低频USB免驱动RFID读卡器支持Windows、安卓(Android)、Linux系统,为方便ID-01H读卡器能快速的接入安卓(Android)系统,我们提供了各种安卓版本的So库及示例源码,安卓工程师可直接拷贝以下代码使用到项目中。

  按以下4部操作,可快速将So库加载到您的Android工程项目内:

  1、将我们提供的开发包里的文件夹libs及OURIDR_V1.aar,一起复制你的项目APP-->libs目录下;
  2、修改APP-->src下的build.gradle文件,在buildTypes{}的后面,加入
       sourceSets {
            main {
                     jniLibs.srcDirs = ['libs']
            }
       }
       同时在dependencies {}中加入
       implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
  3、加入NDK工具包。
  4、java的源文件中加入import com.reader.ouridr;,就可以调用我们在AAR包里的函数了。
  

读卡器介绍:Web浏览器JS网页可编程二次开发RFID读卡器Android、Linux-淘宝网 (taobao.com)

image.png

image.png

Android Studio读取ID卡号源码:

package com.ic.ouridrtest;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.reader.ouridr; //引入我们的读卡器类

public class MainActivity extends AppCompatActivity {

    private TextView tv;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

        // Example of a call to a native method
tv = findViewById(R.id.sample_text);
tv.setText("操作结果");
}

    //读卡------------------------------------------------------------------------------------------
public void idr_read(View view)
{
byte status;//存放返回值
byte[] idserial = new byte[5];

        String strls = "";
status = ouridr.read(this,idserial);
if(status == 0)
{
strls = "读取成功!卡号为";
String strls1 = "0"+Integer.toHexString(idserial[0]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(idserial[1]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(idserial[2]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(idserial[3]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(idserial[4]);
strls = strls + strls1.substring(strls1.length()-2);
}
else
{
if(status == 8)
{
strls = "请将卡放在ID卡读卡器感应区";
}
else if(status == 23)
{
strls = "错误提示:读卡器未插入";
}
else
{
strls = "错误代码:" + Integer.toString(status);
}
}
tv.setText(strls);
}

    //仅读一次,重新取放卡才能读到第二次---------------------------------------------------------------
public void idr_read_once(View view)
{
byte status;//存放返回值
byte[] idserial = new byte[5];

        String strls = "";
status = ouridr.readonce(this,idserial);
if(status == 0)
{
strls = "读取成功!卡号为";
String strls1 = "0"+Integer.toHexString(idserial[0]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(idserial[1]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(idserial[2]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(idserial[3]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(idserial[4]);
strls = strls + strls1.substring(strls1.length()-2);
}
else
{
if(status == 8)
{
strls = "请将卡放在ID卡读卡器感应区";
}
else if(status == 23)
{
strls = "错误提示:读卡器未插入";
}
else
{
strls = "错误代码:" + Integer.toString(status);
}
}
tv.setText(strls);
}

    //读出设备全球唯一的设备编号,作为加密狗用----------------------------------------------------------
public void pcdgetdevicenumber(View view)
{
byte status;//存放返回值
byte[] devicenumber = new byte[4];

        String strls = "";
status = ouridr.pcdgetdevicenumber(this,devicenumber);
if(status == 0)
{
strls = "读取成功!设备编号为";
String strls1 = "0"+Integer.toHexString(devicenumber[0]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(devicenumber[1]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(devicenumber[2]);
strls = strls + strls1.substring(strls1.length()-2) +"-";
strls1 = "0"+Integer.toHexString(devicenumber[3]);
strls = strls + strls1.substring(strls1.length()-2);
}
else
{
if(status == 23)
{
strls = "错误提示:读卡器未插入";
}
else
{
strls = "错误代码:" + Integer.toString(status);
}
}
tv.setText(strls);
}

    //让设备发出声响----------------------------------------------------------------------------------
public void idr_beep(View view)
{
byte status;//存放返回值
String strls = "";
status = ouridr.beep(this,50);

        if(status == 0)
{
strls = "读卡器嘀一声成功!!!";
}
else
{
if(status == 23)
{
strls = "错误提示:读卡器未插入";
}
else
{
strls = "错误代码:" + Integer.toString(status);
}
}
tv.setText(strls);
}
}

Android APP运行

image.png