コード例 #1
0
  private void readTag(Tag t) {
    // get NDEF tag details
    Ndef ndefTag = Ndef.get(t);

    // get NDEF message details
    NdefMessage ndefMesg = ndefTag.getCachedNdefMessage();
    if (ndefMesg == null) {
      return;
    }
    NdefRecord[] ndefRecords = ndefMesg.getRecords();
    if (ndefRecords == null) {
      return;
    }
    for (NdefRecord record : ndefRecords) {
      short tnf = record.getTnf();
      String type = new String(record.getType());
      if (tnf == NdefRecord.TNF_WELL_KNOWN && Arrays.equals(type.getBytes(), NdefRecord.RTD_URI)) {
        String url = new String(record.getPayload());
        if (url.startsWith(ATTENDEE_URL_PREFIX)) {
          Intent i = new Intent(Intent.ACTION_VIEW);
          i.setData(Uri.parse("https://" + url.substring(1)));
          startActivity(i);
          return;
        }
      }
    }
  }
コード例 #2
0
ファイル: NfcActivity.java プロジェクト: vtloc/glass-earth
    @Override
    protected String doInBackground(Tag... params) {
      Tag tag = params[0];

      Ndef ndef = Ndef.get(tag);
      if (ndef == null) {
        // NDEF is not supported by this Tag.
        return null;
      }

      NdefMessage ndefMessage = ndef.getCachedNdefMessage();

      NdefRecord[] records = ndefMessage.getRecords();
      for (NdefRecord ndefRecord : records) {
        if (ndefRecord.getTnf() == NdefRecord.TNF_WELL_KNOWN
            && Arrays.equals(ndefRecord.getType(), NdefRecord.RTD_TEXT)) {
          try {
            return readText(ndefRecord);
          } catch (UnsupportedEncodingException e) {
            Log.e(TAG, "Unsupported Encoding", e);
          }
        }
      }

      return null;
    }
コード例 #3
0
 private void connectToNDEF(Tag tag) {
   Ndef ndef = Ndef.get(tag);
   try {
     receiveTab.append("\n" + ndef.getType());
     NdefMessage message = ndef.getCachedNdefMessage();
     if (message != null) {
       NdefRecord[] recordsFromMessage = message.getRecords();
       for (int i = 0; i < recordsFromMessage.length; i++) {
         printMessage(recordsFromMessage[i]);
       }
     } else {
       receiveTab.append("\nNull message");
     }
     receiveTab.append("\nNDEF did work!");
   } catch (Exception ex) {
     receiveTab.append("\nNDEF did not work");
   }
 }
コード例 #4
0
  @Override
  protected void onNewIntent(Intent intent) {
    // if extra is present, it has priority on the saved poll
    Poll serializedPoll = (Poll) intent.getSerializableExtra("poll");
    if (serializedPoll != null) {
      poll = serializedPoll;
    }

    if (intent.getParcelableExtra(NfcAdapter.EXTRA_TAG) != null) {
      Intent broadcastIntent = new Intent(BroadcastIntentTypes.nfcTagTapped);
      broadcastIntent.putExtra(
          NfcAdapter.EXTRA_TAG, intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));
      LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);
    }

    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    Ndef ndef = Ndef.get(tag);

    if (ndef == null) {
      Toast.makeText(
              this, getResources().getText(R.string.toast_nfc_tag_read_failed), Toast.LENGTH_LONG)
          .show();
    } else {
      NdefMessage msg;
      msg = ndef.getCachedNdefMessage();
      config = new String(msg.getRecords()[0].getPayload()).split("\\|\\|");

      // saving the values that we got
      SharedPreferences.Editor editor = preferences.edit();
      editor.putString("SSID", ssid);
      editor.commit();

      if (checkIdentification()) {
        connect(config, this);
      }
    }

    super.onNewIntent(intent);
  }