检测不带移动的NFC标签
问题描述:
我正在使用NFC的Android应用程序,我想知道是否有任何方式在标签和应用程序之间传输数据而没有任何移动。检测不带移动的NFC标签
让我稍微解释一下。 当我接近移动标签时,我将数据传递给卡。但如果我想再次传输数据,我必须避开手机并将其带回标签。
有没有办法在我每次传递数据时都不必移动标签?
非常感谢!
问候。
编辑
例如,在我的代码,我有这样的:
@Override
protected void onNewIntent(Intent intent){
AlertDialog.Builder dialog = new AlertDialog.Builder(WriteTagActivity.this);
if (_writeMode) {
if (intent.getAction().equals(NfcAdapter.ACTION_TAG_DISCOVERED)) {
Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
try {
if((writeTag(buildNdefMessage(), detectedTag))){
dialog.setTitle(getString(R.string.transfer_alert))
.setMessage(getString(R.string.transfer_alert_text)).setCancelable(false)
.setIcon(R.drawable.action_about)
.setPositiveButton(getString(R.string.transfer_alert_button), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
finish();
}
}).create().show();
}else{
dialog.setTitle(getString(R.string.transfer_alert_2))
.setMessage(getString(R.string.transfer_alert_text_2)).setCancelable(false)
.setIcon(R.drawable.action_about)
.setPositiveButton(getString(R.string.transfer_alert_button_yes_2), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
}).setNegativeButton(getString(R.string.transfer_alert_button_no_2), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
}).create().show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
,但如果我想再次将数据传输到我的标签我要搬到手机上。如何将数据传输到我的标签而无需移动,并始终使用我的手机标记?
非常感谢!
答
是什么让你相信你只能为每一次点击标签传输一次数据?
如果您的标签是NFC标签(Ndef
),则可以为每个标签激活使用多个读取/写入。同样,如果您使用任何其他通信协议(IsoDep
,NfcA
,...),您可以多次调用收发方法来交换多个命令。
编辑
关于你的示例代码,您只需打电话给你writeTag(...)
方法多次。当然,这只有在你的标签动态处理数据时才有意义。
是的,但我不知道如何保存detectedTag以再次执行writeTag(..)函数。 – Enzo
你不应该保存它(尽管你可能想把它传递给一个单独的线程)。你为什么想要?与标签的交易应该保持简短,因为它通常假定标签只会在短时间内被窃听。 –
但是,如果我想每次点击按钮都需要很长一段时间才能获取标签并传输数据?那不是真的吗? – Enzo