언젠가서부터 익숙해져버린 것 중 하나가 바로 NFC, 여기서는 이에 대해 소개한다.
NFC(Near Field Communication)는 근거리 무선 통신 기술로, 일반적으로 10cm 이하의 거리에서 동작한다. NFC를 통해 NFC 태그와 디바이스 간에, 혹은 디바이스 간에 소규모 데이터를 주고 받는다. NFC 태그에는 다양한 종류가 있다.
단순한 태그는 읽고 쓰기만 가능하며, 읽기만 가능하지만 대신 한번은 쓸 수 있는 영역을 가진 태그도 있다. 연산 기능을 제공하거나 접근 인증을 위한 암호화 하드웨어를 갖는 태그도 있다. 고수준의 태그는 운영환경까지 갖고 있어서 태그상에서 수행되는 코드와 상호작용을 하기도 한다.
태그상에 저장되는 데이터에는 다양한 포맷이 있다. 안드로이드 프레임워크의 API 는 대부분 NDEF(NFC Data Exchange Format)라 불리는 NFC 포럼의 표준을 기반으로 한다. 안드로이드는 NDEF 가 아닌 포맷에 대해서도 지원하기는 한다. 이 절에서는 주로 NDEF를 기반으로 NFC 사용법을 다룬다. NDEF 데이터에 대해서는 두 가지 유스케이스로 나눌 수 있다.
- NFC 태그로 부터 NDEF 데이터를 읽어들인다.
- 안드로이드 빔을 이용해 한 디바이스에서 다른 디바이스로 NDEF 메시지를 전송한다.
태그로 부터 읽어들인 데이터를 처리하는 시스템이 태그 디스패치다. 태그 디스패치 시스템은 검색된 태그를 분석하고, 적절히 분류한 뒤 분류된 데이터에 관심이 있는 애플리케이션을 구동한다. 검색된 NFC 태그의 처리를 원하는 애플리케이션은 인텐트 필터를 등록해 그 데이터의 처리를 요청한다. 두 디바이스가 물리적으로 접촉됐을 때 안드로이드 빔을 사용해 NDEF 메시지를 다른 디바이스로 전송할 수 있다.
NFC 기능을 사용한 접촉 방식의 데이터 전달이 블루투스와 같은 다른 무선 통신보다 사용자에게 더 편리하다. 사용자가 수작업으로 디바이스를 조사하거나 페어링하는 절차가 필요없기 때문이다. 디바이스가 특정 거리 내로 들어오기만 하면 연결이 자동으로 맺어진다.
안드로이드 빔은 일련의 NFC API 를 사용하는데 애플리케이션은 이 안드로이드 빔을 이용해 다른 디바이스로 데이터를 전송한다. 예를 들면, 연락처와 브라우저, 유튜브 등의 애플리케이션들은 안드로이드 빔을 사용해 연락처 정보나 웹 페이지, 비디오를 다른 디바이스와 공유한다.