티스토리 뷰
특정기기에 대한 리모컨 역할을 하는 안드로이드앱을 만들게 되었는데
플레이스토어에서 테스트하기위한 앱을 찾아보니 생각보다 내가 원하는 기능을 하는 앱을 찾기가 어렵다
그래서 블루투스의 SPP를 이용한 테스트 앱을 만들어보았다.
앱의 안드로이드에서 제공하는 Bluetooth Chat Sample을 참고하여 만들었다.
개발에 필요한 배경지식
1. UUID
UUID는 네트워크 상에서 서로 모르는 개체들을 식별하고 구별하기위한 각각의 고유한 이름이다.
블루투스 연결을 맺기위해서는 UUID를 연결할 대상에 맞게 설정해줘야한다.
안드로이드에서 연결한 기기의 UUID는 굉장히 많은데
내 경우에는 SPP연결을 위한 UUID로 연결한다
00001101-0000-1000-8000-00805F9B34FB
2. SECURE와 INSECURE연결
블루투스 기기와 연결시 secure연결과 insecure연결중 선택하여 연결이 가능하다
간단히 말하면 스니핑이 가능한 연결과 그렇지 않은 연결이다
이부분에서는 굳이 보안상 취약한 연결을 이용할 필요가 없으므로 secure연결을 했다
3. BLE
bluetooth low energy의 약자로 블루투스 4.0부터 나온 기술이며 대표적으로 비콘에 적용되어있다.
BLE는 양방향 통신을 위한 목적은 아니며 예를 들면 비콘에서 자신의 정보(title, address 등)을 담을 정보를 주기적으로 브로드캐스팅한다.
4. 블루투스 연결과정
블루투스 장치를 스캔한후 해당 블루투스와 페어링을 맺습니다.
한번 페어링을 맺은 대상은 자동으로 관련 정보가 저장되어 다음부터 페어링을 맺을 필요가 없습니다.
페어링이 된 기기와 코넥팅을 하면 비로서 서로 통신을 주고 받을 준비가됩니다.
참고 : http://www.hardcopyworld.com/ngine/aduino/index.php/archives/2101
구현
○ 순서도
대략적으로 앱의 동작 순서에 대한 플로우차트를 만들어보았다.
○ 메인화면
메인화면 - 현재 블루투스 기기와의 연결상태를 표시하고 액션바의 기능에는 클리어, 상단고정, 블루투스 설정등이 있다
블루투스 기기와 연결되면 기기에서 보내는 바이트코드를 파싱해서 16진수로 표시한다
○ 블루투스 연결설정
블루투스 연결설정
페어링된 기기목록과 BLE를 통해 스캔되는 블루투스 기기에 대한 목록을 노출한다
BLE스캔목록의 기기를 선택했하면 페어링을 맺고 연결을 시켜준다
○ 메세지를 송신하기위한 화면
하단 프로토콜 레이아웃 플로팅 버튼을 통해서 노출시키며
ADD PROTOCOL 버튼을 클릭해서 원하는 프로토콜을 만들 수 있다.
만들어진 프로토콜은 REALM을 통해 저장관리된다
예제로 "안녕"이라는 이름으로 만들어진 프로토콜을 기기로 송신하면
화면에 빨강색으로 송신된 데이터의 값이 표기된다.
○ 송신 프로토콜을 만드는 팝업
프로토콜 생성 팝업이다
생성되는 프로토콜의 이름을 입력받고 마지막 바이트가 체크섬이면 checksum last byte 체크박스를 체크하면
자동으로 마지막 바이트를 체크섬으로 만들어준다
소스 및 플레이스토어 주소
앱 다운 주소 : https://play.google.com/store/apps/details?id=com.karrel.bluetoothsample
'개발 > ANDROID' 카테고리의 다른 글
[GITHUB] Repository test has failed. (0) | 2017.08.24 |
---|---|
[안드로이드] 데이터 바인딩 (0) | 2017.08.24 |
[안드로이드] swipe to remove item on recyclerview (7) | 2017.07.28 |
[안드로이드 스튜디오 설정] 클래스 생성시 주석 넣기 (0) | 2017.07.28 |
[안드로이드] 커스텀 사인뷰 (2) | 2017.07.27 |
- Total
- Today
- Yesterday