2015-03-24 2 views
0

Как я могу отправить необработанные байты NFC P2P. У меня есть это на стороне отправителя:Как отправить байты [] NFC

private static NdefRecord createByteRecord(final byte[] b){ 
    final byte[] data = new byte[b.length + 1]; 
    data[0] = (byte) 0x0; 
    System.arraycopy(b, 0, data, 1, b.length);  
    return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data); 
} 

Я не знаю, если «NdefRecord.RTD_TEXT» является хорошим выбором здесь. На стороне приемника это выглядит так:

private String readText(NdefRecord record) throws UnsupportedEncodingException 
{ 
    byte[] payload = record.getPayload(); 
    //DO SOMETHING WITH BYTES, BUT GOT WRONG RESULTS WITH THIS BYTES  
    String textEncoding = ((payload[0] & 128) == 0) ? "UTF-8" : "UTF-16"; 
    int languageCodeLength = payload[0] & 0063; 
    return new String(payload, languageCodeLength + 1, payload.length - languageCodeLength - 1, textEncoding); 
} 

Какой тип записи следует использовать для передачи необработанных байтов данных? Как они должны быть упакованы в запись NDEF?

ответ

0

Чтобы передать массив байтов, лучше использовать TNF_MIME_MEDIA. Вы можете создать свой собственный тип пантомимы, например:

"application/vnd.com.mycompany.myapp.beam" 

Например, чтобы создать NDEFRecord:

byte[] bytes = ...; 
NdefRecord mimeRecord = NdefRecord.createMime("application/vnd.com.mycompany.myapp.beam", bytes); 

Ниже документ от андроида:

https://developer.android.com/guide/topics/connectivity/nfc/nfc.html#mime

+0

@Remasky, это полезно ? – LaurentY

+0

Я провешу его в этот уик-энд. – Remasky

+0

Это работает, спасибо большое. – Remasky