Java 从NFC读取标签时,Android活动挂起或屏幕冻结
我正在开发一个Android应用程序,它具有从NFC卡读取NFC标签ID的功能。我使用以下代码从卡中读取NFC标签Java 从NFC读取标签时,Android活动挂起或屏幕冻结,java,android,nfc,Java,Android,Nfc,我正在开发一个Android应用程序,它具有从NFC卡读取NFC标签ID的功能。我使用以下代码从卡中读取NFC标签 @Override protected void onNewIntent(Intent intent) { ReadNFCTagFromIntent(intent); } private void ReadNFCTagFromIntent(Intent intent) { byte[] inarray = intent.getByteArrayExtra(NfcA
@Override
protected void onNewIntent(Intent intent) {
ReadNFCTagFromIntent(intent);
}
private void ReadNFCTagFromIntent(Intent intent) {
byte[] inarray = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
int i, j, in;
String[] hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F" };
String nfc_card_tag = "";
for (j = 0; j < inarray.length; ++j) {
in = (int) inarray[j] & 0xff;
i = (in >> 4) & 0x0f;
nfc_card_tag += hex[i];
i = in & 0x0f;
nfc_card_tag += hex[i];
}
ShowDialog(nfc_card_tag); // This function Will Display a Dialog With Tag Value....
}
这是我在清单文件中的活动声明
<activity android:name="ActHome"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfctechlist" />
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
</intent-filter>
这是我用于TechU发现的资源文件中的xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcB</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcF</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcV</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.Ndef</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.MifareClassic</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>
</resources>
此代码工作正常,但问题是当我尝试将nfc卡连接到设备时,我的活动至少会挂起/冻结10/15秒,然后根据我的代码显示对话框。如果我试着一张接一张地连续贴上5到6张卡片,那么它会在10-15秒后同时显示所有对话框。我不知道为什么在读NFC卡上的标签时我的活动被挂起来了
提前感谢您尝试过使用新线程吗?您能举例说明如何将我的代码放入线程吗?
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcB</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcF</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcV</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.Ndef</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.MifareClassic</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>
</resources>