2013-10-30 71 views
0

我正在使用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(); 

     } 

     } 
    } 
    } 

,但如果我想再次將數據傳輸到我的標籤我要搬到手機上。如何將數據傳輸到我的標籤而無需移動,並始終使用我的手機標記?

非常感謝!

回答

0

是什麼讓你相信你只能爲每一次點擊標籤傳輸一次數據?

如果您的標籤是NFC標籤(Ndef),則可以爲每個標籤激活使用多個讀取/寫入。同樣,如果您使用任何其他通信協議(IsoDep,NfcA,...),您可以多次調用收發方法來交換多個命令。


編輯

關於你的示例代碼,您只需打電話給你writeTag(...)方法多次。當然,這隻有在你的標籤動態處理數據時纔有意義。

+0

是的,但我不知道如何保存detectedTag以再次執行writeTag(..)函數。 – Enzo

+0

你不應該保存它(儘管你可能想把它傳遞給一個單獨的線程)。你爲什麼想要?與標籤的交易應該保持簡短,因爲它通常假定標籤只會在短時間內被竊聽。 –

+0

但是,如果我想每次點擊按鈕都需要很長一段時間才能獲取標籤並傳輸數據?那不是真的嗎? – Enzo