读取RFID / NFC标签ID

时间:2014-03-17 23:29:49

标签: java android nfc rfid

我正在尝试获取一段代码,以便能够扫描标记并在TextView中显示该标记...

我在这方面已经被淹没了,任何建议都会受到赞赏......

当我扫描标签时,会播放正在发现的标签的噪音...但是TextView没有更新...所以应用程序当前可以扫描标签,但它没有将所述标签ID放在TextView中...

Java Main Class

package com.security.nfc;

    import android.app.Activity;
    import android.content.Intent;
    import android.nfc.NfcAdapter;
    import android.nfc.Tag;
    import android.os.Bundle;
    import android.widget.TextView;

public class main extends Activity 
{



@Override
protected void onCreate(Bundle b)
{
    super.onCreate(b);
    setContentView(R.layout.main);

}
    public void onNewIntent(Intent intent) 
    {
        Tag myTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        TextView tagID = (TextView) findViewById(R.id.result);
        tagID.setText("TagID: " + myTag.getId());
    }

}

Android Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.security.nfc">

<application android:allowBackup="true"
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:theme="@style/AppTheme">

    <activity
        android:name="com.security.nfc.main">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER"/>
            <action android:name="android.nfc.action.TECH_DISCOVERED"/>
            <action android:name="android.nfc.action.TAG_DISCOVERED"/>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        </intent-filter>
    </activity>
    <uses-feature android:name="android.hardware.nfc" android:required="true" />
</application>

<uses-permission android:name="android.permission.NFC" />

</manifest>

2 个答案:

答案 0 :(得分:0)

如果您希望在活动已在前台可见时接收NFC标签发现事件,则应向NFC前台调度系统注册。见Advanced NFC: Using the NFC Foreground Dispatch System。您通常会使用NfcAdapter的enableForegroundDispatch()方法进行注册。之后,您可以在活动的onNewIntent()方法中获取意图(或作为待处理的意图结果,具体取决于您的注册方式)。

答案 1 :(得分:0)

void onNewIntent(意图意图)

这是为在其包中将launchMode设置为“singleTop”的活动,或者在调用startActivity(Intent)时客户端使用FLAG_ACTIVITY_SINGLE_TOP标志而调用的。在任何一种情况下,当在活动堆栈的顶部而不是正在启动的活动的新实例重新启动活动时,将在现有实例上使用用于重新启动的Intent调用onNewIntent()它。

https://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)