Java 在不移动的情况下检测NFC标签
我正在使用NFC开发Android应用程序,我想知道是否有任何方法可以在标签和应用程序之间传输数据,而无需任何移动 让我解释一下。 当我接近移动标签时,我将数据传递给卡。但是,如果我想再次传输数据,我必须避开手机并将其带回标签 有没有办法不必在每次传递数据时都移动标签 多谢各位 问候 编辑 例如,在我的代码中,我有:Java 在不移动的情况下检测NFC标签,java,android,nfc,Java,Android,Nfc,我正在使用NFC开发Android应用程序,我想知道是否有任何方法可以在标签和应用程序之间传输数据,而无需任何移动 让我解释一下。 当我接近移动标签时,我将数据传递给卡。但是,如果我想再次传输数据,我必须避开手机并将其带回标签 有没有办法不必在每次传递数据时都移动标签 多谢各位 问候 编辑 例如,在我的代码中,我有: @Override protected void onNewIntent(Intent intent){ AlertDialog.Builder dialog =
@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(..)函数。您不应该保存它(尽管您可能希望将其传递给单独的线程)。你为什么要这么做?标记的事务应该保持简短,因为通常认为标记只会被点击很短的时间。但是,如果我想让标记被点击很长时间,并在每次单击按钮时传输数据?这是不可能的?这是可能的,只要存储标记句柄,并根据需要经常使用它。但是,请记住,通常用户不会长时间将设备与标签保持在完美的位置(NFC操作应该很短)。我如何在设备中存储标签类型?这是我第一次使用Android+NFC。非常感谢你!