Home » Android -16. 근거리 통신

Android -16. 근거리 통신

16.1. NFC

  • NFC는 핸드폰 안에 들어가는 RFID 기술의 총체. RFID는 무선 주파수를 이용해 통신을 하는 기술.
  • 교통카드의 id 값을 가져오는 샘플. 테스트는 해당 액티비티를 띄우고 교통카드를 갖다 대어 id가 뜨는지 확인한다.

<step14/NfcSample>
[php]
nfcAdapter = NfcAdapter.getDefaultAdapter(this); (1)
Intent intent = new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); (2)
pIntent = PendingIntent.getActivity(this, 0, intent, 0); (3)

@Override
protected void onResume() {
super.onResume();
if (nfcAdapter != null) {
nfcAdapter.enableForegroundDispatch(this, pIntent, null, null); (4)
}
}

@Override
protected void onPause() {
if (nfcAdapter != null) {
nfcAdapter.disableForegroundDispatch(this); (5)
}
super.onPause();
}

@Override
protected void onNewIntent(Intent intent) { (6)
super.onNewIntent(intent);
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); (7)
if (tag != null) { (8)
byte[] tagId = tag.getId();
String[] list = tag.getTechList();
for(int i=0; i<list.length; i++) {
Logger.i(list[i]);
}

text.setText("TagID: " + toHexString(tagId));
}
}
[/php]

번호 설명
(1) Nfc Adapter 생성
(2) 인텐트 생성 및 플래그 설정
(3) 펜딩인텐트 생성
(4) 액티비티가 foreground에 있을 때 데이터 처리가 가능하도록 설정
(5) 액티비티가 foregorund에 없을 때 데이터 처리 불가능하도록 설정
(6) 실행한 Activity 가 foreground 상태에서 Intent 에 Extra 값을 추가하고 StartActivity 를 호출하면 onCraete() 대신에 onNewIntent(Intent intent) 가 호출이 되고 그 다음 onResume() 이 호출이 됨
(7) 받아온 (태그)를 가져와 태그 객체에 넣어준다..
(8) 들어있는 태그가 있으면 가져온다.

<퍼미션 등록>
<AndroidManifest.xml>
[php]
<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc" android:required="false" />
[/php]

16.2. 블루투스

  • 장비와 장비간 근거리 통신을 할 수 있는 기술

<퍼미션 등록>
<AndroidManifest.xml>
[php]
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
[/php]

  • 블루투스를 이용한 디바이스 간 채팅 샘플은 직접 샘플 소스(Step14/BluetoothSample)를 확인.
image164 image160 image166
image162 image158 image156

그림 65. 블루투스 채팅