NFC ANDROID LÀ GÌ

     

Là một technology giao tiếp tầm sát (NFC) được cách tân và phát triển dựa trên nguyên lý tần số vô đường nhận dạng (Radio-frequency identification - RFID) có thể chấp nhận được một nhờ cất hộ sóng radio mang lại một thẻ điện tử thụ động. NFC là 1 tập hòa hợp các chuẩn cho những smartphones và các thiết bị tựa như để tùy chỉnh liện lạc qua sóng vô tuyến đường với nhau bằng cách chạm chúng lại với nhau trong khoảng cách gần (một vài cm).

Bạn đang xem: Nfc android là gì

Google trình làng NFC vào năm 2010 và điện thoại cảm ứng Nexus S biến chuyển thiết bị Android đầu tiên được cung ứng NFC.

Trên android 4.0 (Ice Cream Sandwich) hào kiệt này chọn cái tên là app android Beam giúp mở rộng tài năng kết nối và share dữ liệu.

Tổng quan lại về NFC

Đặc điểm:

Near Field Communication

Là technology không dây tương tự như như Bluetooth, Wifi

Truyền dữ liệu không dây tằm ngắn (từ 1-4 cm trên smartphones)

Low speed – vận tốc truyền thiết lập chậm ( 106 mang lại 414 kbps)

Thiết lập liên can thấp (no discovery, no pairing)

Tương tác được với các thiết bị thu phát tiêu cực (không buộc phải nguồn điện)

Dữ liệu hoàn toàn có thể truyển tải:

TextURLDanh bạ (Contact info)Media files ( bài xích hát, hình ảnh, đoạn clip …)…

Ứng dụng thực tế:

Chia sẻ tập tin

Làm thẻ marketing điện tử (Electronic business card)

Chơi game trên di động: liên kết giữa 2 hay những thiết bị để thuộc chơi.

Mở rộng kết nối ( android Beam: thực hiện để kích hoạt Bluetooth, Wifi Direct để share dữ liệu một cách nhanh chóng)

Ưu điểm:

Thiết lập kết nối thuận tiện (không phân phát hiện, không ghép nối)

Triển khai rẻ, chức năng giống như QR Codes

Yếu điểm:

Khoảng cách giao tiếp ngắn

Bảo mật kém

2. Demo thực hiện NFC API Framework bên trên Android

Dữ liệu được lưu trữ trong thẻ (tag) bao gồm thẻ được ghi bằng nhiều định dạng. Nhưng lại trong app android Framework API nó chỉ dựa vào một chuẩn của NFC forums là NDEF (NFC Data Exchange Format)

Tiêu chuẩn chỉnh của NDEF Message:

*

Trên Android đối tượng NDEF message là 1 trong định dạng nhị phân được sử dụng để đóng góp gói những dữ liệu được định kiểu. Nó được luật pháp bởi NFC forums cho câu hỏi truyền sở hữu và lưu trữ với NFC.

NDEF định nghĩa các Messages và các Records. Đối tượng NDEF Record tiềm ẩn dữ liệu được định kiểu như MIME-type media, URI, hoặc một câu chữ (payload) được tuỳ chỉnh.

DEMO được chia làm 2 Part

Part 1: chạy thử P2P (Android to lớn Android) để share text thân 2 ứng dụng

Part 2: Write NFC tags (Sử dụng android devices để ghi tài liệu trên tag NFC)

PART 1:

Ứng dụng demo:

Tên: Sticky Notes

Chức năng: Truyền tài liệu (text) qua lại thân 2 điện thoại cảm ứng thông minh có cung ứng NFC

Yêu cầu:

Điện thoại Android:

Android API > 10 ( 2.3.3 – GINGERBREAD_MR1)Hỗ trợ NFC (Enable NFC function on both devices)

Coding:

Bắt đầu làm việc với NFC bên trên Android, triển khai NfcAdapter - lớp thay mặt cho NFC bên trên device:

Trong cách tiến hành (PT) onCreate() của lớp StickyNotesActivity:

public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); mNote = (EditText) findViewById(R.id.note); mNfcAdapter = NfcAdapter.getDefaultAdapter(this); if(mNfcAdapter == null) mNote.setText("NFC not available on this device!"); return; //Add listener for EditText when text changed mNote.addTextChangedListener(mTextWatcher); // Handle all of our received NFC intents in this activity. MNfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); // Intent filters for reading a lưu ý from a tag or exchanging over p2p (android lớn android). IntentFilter ndefDetected = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); try ndefDetected.addDataType("text/plain"); catch (MalformedMimeTypeException e) e.printStackTrace(); mNdefExchangeFilters = new IntentFilter<> ndefDetected ;Trong cách làm (PT) này xúc tiến những thứ quan trọng để đến p2p làm cho việc.

Xem thêm:

mNfcPendingIntent: là một trong những PendingIntent nhằm dẫn xuất tới bao gồm activity StickyNotesActivity, với flag FLAG_ACTIVITY_SINGLE_TOP để thực hiện với PT onNewIntent().

ndefDetected: là IntentFilter chỉ lọc các hành vi gửi NDEF message (NfcAdapter.ACTION_NDEF_DISCOVERED) cùng với MIME type “text/plain“, vì chưng vậy khi intent này được gửi đến, bọn họ sẽ lấy được ngôn từ message (payload).

Tiếp theo để có thể chấp nhận được gửi cùng nhận NDEF message, họ tạo PT enableNdefExchangeMode() trong onResume():

private void enableNdefExchangeMode() if(mNfcAdapter == null) return; if(Build.VERSION.SDK_INT 14) mNfcAdapter.enableForegroundNdefPush(this, getNoteAsNdef()); else mNfcAdapter.setNdefPushMessage(getNoteAsNdef(), this); /* Register foreground dispatch khổng lồ handler notes from inside our application * This will give give priority to the foreground activity when dispatching a discovered Tag to lớn an application. */ mNfcAdapter.enableForegroundDispatch(this, mNfcPendingIntent, mNdefExchangeFilters, null);PT này được cho phép thiết bị khởi tạo kết nối ngang mặt hàng peer to lớn peer (p2p) thông qua NFC.

enableForegroundNdefPush() đang gửi NDEF message (getNoteAsNdef()) tới sản phẩm khác.

enableForegroundDispatch() thiết lập sự khiếu nại lắng nghe (listener) mang đến intent và lọc hành vi gửi NDEF message (NfcAdapter.ACTION_NDEF_DISCOVERED).

Sau khi nhận ra message PT onNewIntent() được gọi:

protected void onNewIntent(Intent intent) // NDEF exchange mode if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) NdefMessage<> msgs = getNdefMessages(intent); //Replace current text with new pay-load promptForContent(msgs<0>); Tại đây bọn chúng nhận về NDEF message qua PT getNdefMessages() cùng phân tích chúng qua PT promptForContent() để nhận văn bản (payload) được nhờ cất hộ tới.

Xem thêm: Cáp Tín Hiệu Rs485 Là Gì ? Cấu Tạo Cáp Rs485 Vặn Xoắn Chống Nhiễu

Giải thích những PT:

getNoteAsNdef(): thiết đặt NDEF message để gửi đi

private NdefMessage getNoteAsNdef() byte<> textBytes = mNote.getText().toString().getBytes(); NdefRecord textRecord = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, "text/plain".getBytes(), new byte<> , textBytes); return new NdefMessage(new NdefRecord<> textRecord);

textBytes: Mảng byte lưu dữ liệu (text) được nhập vào xuất phát điểm từ 1 EditText. Kế tiếp được gửi vào NdefRecord cùng đẩy vào NdefMessage.

promptForContent(NdefMessage<>):Thông báo cho tới người dùng để thay cầm nội dung lúc này thành văn bản (pay-load) được giữ hộ tới

private void promptForContent(final NdefMessage msg) { new AlertDialog.Builder(this).setTitle("Replace current content?") .setPositiveButton("Yes", new DialogInterface.OnClickListener() {