URL : http://onycomict.com/board/bbs/board.php?bo_table=class&wr_id=146
.....
NFC 로 통신하기 위해서는 2대의 폰끼리 뒷면을 접촉해야 하며 이때의 이벤트를 구해야 합니다. NfcAdapter.setNdefPushMessageCallback() 함수로 이벤트 리스너를 지정하면 2대의 NFC 단말이 서로를 인식했을 때 화면의 사이즈가 줄어드는데 이때 사용자가 화면을 터치하면 createNdefMessage() 라는 이벤트 함수가 실행됩니다. 이것은 NDEF 푸쉬 메시지 생성 이벤트 함수이며, 이 함수에서 NDEF 메시지를 생성해서 반환하면 상대편 NFC 디바이스로 전달됩니다.
NfcAdapter.setOnNdefPushCompleteCallback() 함수로 이벤트 리스너를 지정하면 데이터 전송이 완료되었을 때 onNdefPushComplete() 라는 이벤트 함수가 실행됩니다. 데이터 전송이 완료 되었을 때 화면에 결과를 표시하려면 이벤트 핸들러를 사용해서 UI 스레드로 이벤트를 다시 전달해야 합니다. 예제를 통해서 구체적인 방법을 알아보겠습니다.
.....
3) /src/<패키지명>/MainActivity.java 파일을 열고 아래와 같이 새로운 코드를 추가합니다.
@Override
public NdefMessage createNdefMessage(NfcEvent event) {
// 여러개의 NDEF 레코드를 모아서 하나의 NDEF 메시지를 생성
NdefMessage message = new NdefMessage( new NdefRecord[] {
createTextRecord("Text sample record-1", Locale.ENGLISH),
createTextRecord("한국어 sample record-2", Locale.KOREAN),
createUriRecord("www.google.com"),
createUriRecord("cafe.naver.com/tizenity")
});
return message;
}
.....
@Override
public void onNdefPushComplete(NfcEvent event) {
// 핸들러에 메시지를 전달한다
mHandler.obtainMessage(1).sendToTarget();
}
....
....
4) NFC 를 사용하려면 사용자 지정 권한이 필요합니다. AndroidManifest.xml 파일을 열고 아래와 같이 2줄의 코드를 추가합니다. NFC 칩을 사용하기 위해서 android.permission.NFC 퍼미션이 필요합니다. NFC 칩이 탑재된 폰에서만 앱을 검색할 수 있도록 하기 위해서 android.hardware.nfc 라는 uses-feature 를 추가합니다.
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-feature android:name="android.hardware.nfc" android:required="false" />
<uses-permission android:name="android.permission.NFC" />
* Android Beam(P2P)는 SDK 14인 Android 4.0 ICS부터 지원된다.
.....
'Programming > Android Java' 카테고리의 다른 글
네이버 푸시 플랫폼과 Android WakeLock (0) | 2014.09.29 |
---|---|
NFC: Host-based Card Emulation (0) | 2014.09.28 |
NFC 포어그라운드 디스패치@안드로이드 센서 프로그래밍. 저)그렉 밀레 (0) | 2014.09.27 |
NFC Demo (0) | 2014.09.27 |
NFC (0) | 2014.09.27 |