国产偷亚洲偷欧美偷精品_亚洲成a人无码亚洲成www牛牛_广东少妇大战黑人34厘米视频_国产仑乱无码内谢_亚洲性无码一区二区三区

您現(xiàn)在的位置:包裝印刷網(wǎng)>技術(shù)首頁(yè)>技術(shù)動(dòng)態(tài)

安卓(Android)下如何開發(fā)USB NFC讀寫器app

2025
01-05

07:16:45

分享:
32
來源:北京友我科技有限公司

對(duì)安卓工程師來說,在安卓下使用USB設(shè)備需要了解很多硬件的內(nèi)容,這可能會(huì)導(dǎo)致工程周期的延長(zhǎng)或者app的不穩(wěn)定。為了將這種風(fēng)險(xiǎn)降到,友我科技發(fā)布了NFC讀寫器在安卓下的sdk,使用NFC讀寫器的類接口,安卓工程師就可以直接調(diào)用NFC讀寫器了,簡(jiǎn)單可靠。

NFC讀寫器的安卓庫(kù)文件為:yoworfidreader.jar

在ADT工程中導(dǎo)入yoworfidreader.jar庫(kù)文件,即可在工程中引用NFC讀寫器的類文件

在代碼中調(diào)用:


public usbreader rfidreader;

rfidreader = new usbreader();

這樣就創(chuàng)建了NFC讀寫器的類的實(shí)體,下面只要使用rfidreader的各種方法就可以了,以下為讀寫M1卡的例子代碼:


protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_m1);

rbKeyA=(RadioButton) findViewById(R.id.rbkeya);

txtCardNo = (TextView) findViewById(R.id.txtcardno);

edtKey = (EditText) findViewById(R.id.edtkey);

edtKey.setText(""FFFFFFFFFFFF"");

edtBlockID = (EditText) findViewById(R.id.edtblock);

edtBlockID.setText(""1"");

edtData = (EditText) findViewById(R.id.edtdata);

edtData.setText(""11111111111111112222222222222222"");

Button button = (Button) findViewById(R.id.btnreadCard);

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

txtCardNo.setText("""");

edtData.setText("""");

int BlockID = MainActivity.ValidInt( edtBlockID.getText().toString() , 63);

if(BlockID<0)

{

MainActivity.dialog(""塊號(hào)必須是0-63"",M1.this);

return;

}

if(!MainActivity.ValidHexString(edtKey.getText().toString(), 6))

{

MainActivity.dialog(""密鑰必須是6字節(jié)16進(jìn)制"",M1.this);

return;

}

if( MainActivity.rfidreader.ISO14443A.YW_RequestCard(MainActivity.rfidreader.ISO14443A.REQUESTMODE_ALL)<0)return;

byte[] CardNo=MainActivity.rfidreader.ISO14443A.YW_AntiCollideAndSelect(MainActivity.rfidreader.ISO14443A.MULTIMODE_ONE);

if(CardNo==null)return;

txtCardNo.setText(""卡號(hào):"" + MainActivity.bytesToHexString(CardNo));

byte KeyMode=MainActivity.rfidreader.ISO14443A.Key_B;

if(rbKeyA.isChecked())KeyMode=MainActivity.rfidreader.ISO14443A.Key_A;


if(MainActivity.rfidreader.ISO14443A.YW_KeyAuthorization(KeyMode, BlockID, MainActivity.HexStringtoBytes( edtKey.getText().toString()))<0)

{

MainActivity.dialog(""密鑰認(rèn)證錯(cuò)誤"",M1.this);

return;

}

byte[] Data = MainActivity.rfidreader.ISO14443A.YW_ReadaBlock(BlockID);

if(Data==null)

{

MainActivity.dialog(""讀取塊失敗"",M1.this);

return;

}

edtData.setText(MainActivity.bytesToHexString(Data));

MainActivity.rfidreader.ReaderHardware.YW_Buzzer(5, 5, 1);

}

});

Button button2 = (Button) findViewById(R.id.btnwritedata);

button2.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

txtCardNo.setText("""");

int BlockID = MainActivity.ValidInt( edtBlockID.getText().toString() , 63);

if(BlockID<0)

{

MainActivity.dialog(""塊號(hào)必須是0-63"",M1.this);

return;

}

if(!MainActivity.ValidHexString(edtKey.getText().toString(), 6))

{

MainActivity.dialog(""密鑰必須是6字節(jié)16進(jìn)制"",M1.this);

return;

}

if(!MainActivity.ValidHexString(edtData.getText().toString(), 16))

{

MainActivity.dialog(""數(shù)據(jù)必須是16字節(jié)16進(jìn)制"",M1.this);

return;

}

if( MainActivity.rfidreader.ISO14443A.YW_RequestCard(MainActivity.rfidreader.ISO14443A.REQUESTMODE_ALL)<0)return;

byte[] CardNo=MainActivity.rfidreader.ISO14443A.YW_AntiCollideAndSelect(MainActivity.rfidreader.ISO14443A.MULTIMODE_ONE);

if(CardNo==null)return;

txtCardNo.setText(""卡號(hào):"" + MainActivity.bytesToHexString(CardNo));

byte KeyMode=MainActivity.rfidreader.ISO14443A.Key_B;

if(rbKeyA.isChecked())KeyMode=MainActivity.rfidreader.ISO14443A.Key_A;


if(MainActivity.rfidreader.ISO14443A.YW_KeyAuthorization(KeyMode, BlockID, MainActivity.HexStringtoBytes( edtKey.getText().toString()))<0)

{

MainActivity.dialog(""密鑰認(rèn)證錯(cuò)誤"",M1.this);

return;

}

byte[] Data = MainActivity.HexStringtoBytes(edtData.getText().toString());

if(MainActivity.rfidreader.ISO14443A.YW_WriteaBlock(BlockID, Data)>0)

{

MainActivity.dialog(""數(shù)據(jù)寫入成功"",M1.this);

MainActivity.rfidreader.ReaderHardware.YW_Buzzer(5, 5, 1);

}

else

MainActivity.dialog(""數(shù)據(jù)寫入失敗"",M1.this);

}

});

}

}


支持安卓的NFC讀寫器有YW-605系列和YW-607等

安卓NFC讀寫器的在線開發(fā)指南:NFC讀寫器安卓開發(fā)指南


全年征稿/資訊合作 聯(lián)系郵箱:137230772@qq.com
版權(quán)與免責(zé)聲明

1、凡本網(wǎng)注明"來源:包裝印刷網(wǎng)"的所有作品,版權(quán)均屬于包裝印刷網(wǎng),轉(zhuǎn)載請(qǐng)必須注明包裝印刷網(wǎng),http://dhgjyz.top/。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

2、企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。

3、本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。

4、如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

QQ聯(lián)系

咨詢中心
客服幫您輕松解決~

聯(lián)系電話

參展咨詢0571-81020275會(huì)議咨詢0571-81020275

建議反饋

返回頂部