1. NFC 개념과
NFC 안드로이드
앱 개발
Jellycoaster Inc.
Dev.team
서울시 마포구 상암동 누리꿈스퀘어 연구개발타워 1111호 _ 070.7450.6572 _ dev@jellycoaster.com
2. 목차
I. NFC 개념
I. NFC 사용 예
II. NDEF
III. NFC 안드로이드 개발(샘플 앱 구현)
서울시 마포구 상암동 누리꿈스퀘어 연구개발타워 1111호 _ 070.7450.6572 _ app@jellycoaster.com
3. NFC란?
NFC는
NFC 칩이 탑재된 두 대의 단말기 간에 약 10cm 이내의 거리에서 13.56MHz
대역 으로 데이터를 양방향 통신할 수 있는
비접촉 근거리 무선 통신 기술을 말합니다.
근거리에서 무선 통신을 통해 정보를 교환할 수 있다면 접촉을 통한
공유와 발견, 지불, 티켓팅이 가능해지는 것을 의미합니다.
2013 Jellycoaster Inc. Dev.team
4. NFC 사용 예
2012년 4월 1일 SBS 예능프로그램 런닝맨 편에서 보시게 되면,
2013 Jellycoaster Inc. Dev.team
5. NFC 사용 예
런닝맨 멤버들이 출연하고.
2013 Jellycoaster Inc. Dev.team
6. NFC 사용 예
미션을 수행하게 되는데,
다음 사진과 같이 NFC 기능이 탑재된 스마트폰을 가져가게 되면,
2013 Jellycoaster Inc. Dev.team
7. NFC 사용 예
런닝맨의 미션이 나오게 되는 장면입니다.
NFC 사용을 자연스럽게 보여주고 있습니다.
다음으로는 NDEF 에 대한 설명이 있겠습니다.
2013 Jellycoaster Inc. Dev.team
8. NDEF (NFC Data Exchange Format)
NFC 애플리케이션 개발을 위해서는
NDEF에 대한 이해가 필요합니다.
2013 Jellycoaster Inc. Dev.team
9. NDEF (NFC Data Exchange Format)
NDEF (NFC Data Exchange Format)는
NFC에서 데이터를 교환하기 위한 바이너리 메시지 포맷입니다.
하나의 NDEF 메시지는 NDEF 레코드들을 가지고 있으며,
특정 타입의 페이로드(본문 내용)를 전송하는데 목적이 있습니다.
2013 Jellycoaster Inc. Dev.team
10. NDEF 메시지
기본적인 메시지 단위 하나를 'NDEF 메시지 (NDEF Message)'라고
부릅니다.
하나의 NDEF 메시지는 여러 개의 'NDEF 레코드(NDEF Record)'로
구성되어 있습니다.
*출처: http://blog.startnfc.com/entry/NDEF
2013 Jellycoaster Inc. Dev.team
11. NFC 안드로이드 개발
AndroidManifest.xml 에 권한 추가
<uses-feature android:name="android.hardware.nfc"
required="false”/>
<uses-permission android:name="android.permission.NFC" />
2013 Jellycoaster Inc. Dev.team
12. NFC 안드로이드 개발
다음과 같이 추가합니다.
private NfcAdapter nfcAdapter;
private PendingIntent pendingIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
Intent intent = new Intent(this,
getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
}
2013 Jellycoaster Inc. Dev.team
13. NFC 안드로이드 개발
onResume(), onPause() 에 다음과 같은 함수를 추가합니다.
@Override
protected void onResume() {
super.onResume();
if (nfcAdapter != null) {
nfcAdapter.enableForegroundDispatch(this, pendingIntent,
null, null);
}
}
@Override
protected void onPause() {
if (nfcAdapter != null) {
nfcAdapter.disableForegroundDispatch(this);
}
super.onPause();
}
2013 Jellycoaster Inc. Dev.team
14. NFC 안드로이드 개발
NFC 태그를 인식하기 위해서 다음 함수를 호출하며,
public void enableForegroundDispatch(
Activity activity
, PendingIntent pendingIntent,
IntentFilter[] filters,
String[][] techLists)
더이상 인식 할 필요가 없을때
종료하기 위해 다음 함수를 호출합니다.
public void disableForegroundDispatch(Activity activity);
2013 Jellycoaster Inc. Dev.team
15. NFC 안드로이드 개발
태그가 인식이 되면 onNewIntent()로 Intent가 전달됩니다.
onNewIntent()에서는 태그가 인식되면 인식된 태그 id를 전달하게 됩니다.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
if (tag != null) {
byte[] tagId = tag.getId();
Toast.makeText(getBaseContext(),
"태그ID:”+tagId,
Toast.LENGTH_SHORT).show();
}
}
2013 Jellycoaster Inc. Dev.team
16. NFC 안드로이드 개발
태그를 갖다 대면 다음과 같은
결과 화면을 볼 수 있습니다.
2013 Jellycoaster Inc. Dev.team