Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不移动的情况下检测NFC标签_Java_Android_Nfc - Fatal编程技术网

Java 在不移动的情况下检测NFC标签

Java 在不移动的情况下检测NFC标签,java,android,nfc,Java,Android,Nfc,我正在使用NFC开发Android应用程序,我想知道是否有任何方法可以在标签和应用程序之间传输数据,而无需任何移动 让我解释一下。 当我接近移动标签时,我将数据传递给卡。但是,如果我想再次传输数据,我必须避开手机并将其带回标签 有没有办法不必在每次传递数据时都移动标签 多谢各位 问候 编辑 例如,在我的代码中,我有: @Override protected void onNewIntent(Intent intent){ AlertDialog.Builder dialog =

我正在使用NFC开发Android应用程序,我想知道是否有任何方法可以在标签和应用程序之间传输数据,而无需任何移动

让我解释一下。 当我接近移动标签时,我将数据传递给卡。但是,如果我想再次传输数据,我必须避开手机并将其带回标签

有没有办法不必在每次传递数据时都移动标签

多谢各位

问候

编辑

例如,在我的代码中,我有:

 @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。非常感谢你!