我正在构建一个与USB NFC阅读器交互的应用程序(适用于没有本机NFC的设备)。接收器是USB,带有一个漂亮的SDK,看起来像宣传的那样工作(因为我可以成功地读取翻过读卡器的标签)。
我认为我的挑战应该是非常直接的,但我不明白如何实施的是如何注册我的应用程序,以便在NFC标签附近触发USB连接的NFC阅读器时收到通知。
我是否只注册了一个叫做:
的广播接收器UsbDevice device = (UsbDevice) intent
.getParcelableExtra(UsbManager.EXTRA_DEVICE);
自己启动我的应用程序?不知何故感觉不对。
TIA
答案 0 :(得分:1)
我建议创建在清单中注册的BroadcastReceiver。这将允许您的应用程序即使没有运行也会收到通知。
public class NfcReceiver extends BroadcastReceiver {
/* ... */
@Override
public void onReceive(Context context, Intent intent) {
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
Parcelable[] rawMsgs =_
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
}
} /* end handle NDEF_DISCOVERED */
} /* end onReceive */
} /* end BroadcastReceiver*/
在你的清单中,一定要添加正确的意图过滤器(我从未做过NFC,但我相信这对你开始是正确的:)
<uses-feature android:name="android.hardware.nfc" android:required="true" />
<uses-sdk android:minSdkVersion="10"/>
<uses-permission android:name="android.permission.NFC" />
<receiver android:name=".NfcReceiver">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain" />
</intent-filter>
</receiver>
http://developer.android.com/guide/topics/connectivity/nfc/nfc.html
http://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html
如果您可以/希望走这条路线,还有解决方案,例如:
http://mobisocial.github.com/EasyNFC/apidocs/reference/mobisocial/nfc/Nfc-source.html