본문 바로가기
Programming/Android Java

NFC

by 개Foot/Dog발?! 2014. 9. 27.

URL : http://jaenni99.lgnas.com/doku.php?id=computer_programming_platforms_android_nfc


.....


android에서 NFC 사용하기


퍼미션 설정


AndroidManifest.xml에 아래의 퍼미션들을 정의해야 합니다.

 

    <uses-permission android:name="android.permission.NFC" />


태그 등록


또한 NFC 기능 사용을 위한 태그도 등록합니다.

 

    <uses-feature android:name="android.hardware.nfc" />


NFC 태그는 리더기와 태그가 접촉되자마자 정보를 교환할 수 있도록 인식됩니다. 인식된 정보는 브로드캐스팅되어 애플리케이션에 전달됩니다.


NFC 태그 인식 시 인텐트 전달 대상 액티비티 결정 과정


1. 가장 우선적으로 고려되는 것은 현재 띄워진 액티비티입니다. 즉, 화면에 띄워져 있는 액티비티가 enableForegroundDispatch()를 호출하면 NFC 태그 인식을 기다리고 있는 것인데, 이런 액티비티를 찾게 되면 인텐트가 그 액티비티에게 전달되고 브로드캐스팅은 중단됩니다.

2. 그 다음 확인하는 것은 ACTION_NDEF_DISCOVERED 액션으로 등록된 인텐트를 전달받기 위해 등록한 액티비티가 있는가 입니다. MIME 타입 기준으로 대상 액티비티를 인식합니다. 만약 찾게 되면 인텐트를 전달합니다.

<intent-filter>

        <action android:name="android.nfc.action.NDEF_DISCOVERED" />

        <data android:mimeType="text/plain" />

</intent-filter>

 

3. ACTION_TECH_DISCOVERED 액션으로 등록된 인텐트를 전달받기 위해 등록된 액티비티를 찾습니다. 만약 찾게 되면 인텐트를 전달합니다. /res/xml/에 어떤 NFC 태그를 처리할 것인지 정의하는 필터 정보에 대해 filter_nfc.xml로 저장하였다면 이 파일을 resource 속성으로 추가 합니다.

<intent-filter>

     <action android:name="android.nfc.action.TECH_DISCOVERED" />

     <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/filter_nfc.xml"/>

</intent-filter>

 

4. 마지막으로 ACTION_TAG_DISCOVERED를 받기 위해 등록된 액티비티에게 전달합니다. 이 경우에는 태그 정보를 그대로 전달받게 됩니다.


<intent-filter>

     <action android:name="android.nfc.action.TAG_DISCOVERED" />

</intent-filter>

 

android.nfc 패키지


n  Interfaces

n  NfcAdapter.CreateBeamUrisCallbacks - (4.1 JB부터 지원)

n  NfcAdapter.CreateNdefMessageCallbacks - NDEF push (AndroidBeam) 사용 가능한 또 다른 NFC 기기가 범위내에 있을 경우 호출되는 콜백 (4.0 IC부터 지원)

n  NfcAdapter.OnNdefPushCompleteCallbacks - 시스템이 성공적으로 NdefMessage를 다른 기기에 전달할 경우 호출되는 콜백 (4.0 IC부터 지원)

n  Classes

n  NdefMessage - 변경 불가한 NDEF 메시지 (2.3 GB부터 지원)

n  NdefRecord - 변경 불가한 NDEF record (2.3 GB부터 지원)

n  NfcAdpater - local NFC adapter (2.3 GB부터 지원)

n  NfcEvent - NFC 이벤트 정보 (4.0 IC부터 지원)

n  NfcManager - NfcAdapter의 인스턴스를 얻어오기 위해 사용되는 고수준 관리자 (2.3_MR1 GB부터 지원)

n  Tag - NFC tag (2.3_MR1 GB부터 지원)

n  Exceptions

n  FormatException - 포멧 오류 (2.3 GB부터 지원)

n  TagLostException - Tag 오류 (2.3_MR1 GB부터 지원)


android.nfc.tech 패키지


n  Interfaces

n  TagTechnology - Tag에 있는 technology에 대한 인터페이스

n  Classes

n  IsoDep - Tag에 대한 ISO-DEP(ISO 14443-4) 속성 및 I/O 동작

n  MifareClassic - Tag에 대한 MIFARE Classic 속성 및 I/O 동작

n  MifareUltralight - Tag에 대한 MIFARE Ultralight 속성 및 I/O 동작

n  Ndef - Tag에 대한 NDEF content 및 동작

n  NdefFormatable - Tag에 대한 Ndef 포멧 동작

n  NfcA - Tag에 대한 NFC-A (ISO 14443-3A) 속성 및 I/O 동작

n  NfcB - Tag에 대한 NFC-B (ISO 14443-3B) 속성 및 I/O 동작

n  NfcBarcode - barcord만 포함하는 Tag에 대한 접근

n  NfcF - Tag에 대한 NFC-F (JIS 6319-4) 속성 및 I/O 동작

n  NfcV - Tag에 대한 NFC-V (ISO 15693) 속성 및 I/O 동작