Как искать конкретный встроенный NdefRecord из NdefMessage - PullRequest
0 голосов
/ 18 декабря 2018

Имея такую ​​полезную нагрузку как шестнадцатеричное значение, как показано ниже, проанализируйте ее, чтобы увидеть структуру NdefRecord, используя https://www.ndefparser.net/:

94 03 49 61 73 76 94 01 06 69 04 02 71 79 79 71 54 03 39 63 75 73 94 03 11 63 69 64 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 19 01 03 03 54 63 70 6C 00 70 6C 54 03 11 63 75 74 04 AC F8 12 E9 07 AA 87 C5 78 58 CF 77 E7 8B 93 00 54 03 41 61 73 76 94 01 06 69 04 01 05 50 37 B0 54 02 32 65 74 94 03 09 6F 69 64 04 BA 80 61 6D 51 FB 1B 2B 59 01 1D 01 55 6E 00 65 31 35 33 31 38 32 35 30 35 31 32 33 34 2D 31 35 34 32 35 37 35 39 35 30 38 34 34

Я хочу найти конкретную запись ТИПА: 0x54 ("T") и получить полезную нагрузку.

Я сделал это так, но я чувствую, что это не оптимально и может быть улучшено:

    ndefMessage.records.forEach {
  if (it.type?.contentEquals(hexStringToByteArray("617376")) == true) {
    NdefMessage(it.payload).records.forEach {
      if (it.type?.contentEquals(hexStringToByteArray("6574")) == true) {
        NdefMessage(it.payload).records.forEach {
          if (it.type?.contentEquals(hexStringToByteArray("54")) == true) {
            if (getBytesHexValue(it.payload).startsWith("00")) {
              payload = String(it.payload).substring(1)
            }
          }
        }
      }
    }
  }
}

Есть ли способ улучшить это?

...