Android 향상 블 루 투 스 센서 응용 인 스 턴 스

이 글 은 안 드 로 이 드 가 마 이 크 를 이용 해 아 날로 그 신 호 를 수집 하고 표시 하 는 실현 방법 을 소개 했다.이 채집 수단 은 IO 제어 없 이 단순히 신 호 를 읽 는 경우 에 적용 된다.센서 자체 에 제어 회로(예 를 들 어 혈액 속 산소 신 호 를 수집 하려 면 적외선 과 적외선 교체 발사 가 필요 하 다)가 필요 하 다 면 센서 자체 에 메 인 제어 IC 를 가지 고 영화 내 에서 디지털 신 호 를 수집 하고 출력 해 야 한다.Android 휴대 전 화 는 어떻게 하드웨어 회 로 를 바 꾸 지 않 는 전제 에서 이런 디지털 센서 와 상호작용 을 합 니까?선택 할 수 있 는 통신 방식 은 USB 와 블 루 투 스 가 있 는데 두 가지 방식 은 각각 장점 이 있다.USB 방식 은 센서 에 전 기 를 공급 할 수 있 고 블 루 투 스 방식 은 스스로 전원 을 준비 해 야 한다.USB 인터페이스 표준 이 다 르 고 블 루 투 스 는 보편적으로 SPP 프로 토 콜 을 지원 합 니 다.본 고 는 블 루 투 스 방식 을 선택 하여 안 드 로 이 드 의 블 루 투 스 API 와 블 루 투 스 클 라 이언 트 의 용법 을 소개 한다.
Android 2.0 부터 공식 적 으로 블 루 투 스 API(2.0 이하 시스템 의 비공 식 블 루 투 스 API 를 발 표 했 습 니 다.참고 할 수 있 습 니 다.http://code.google.com/p/android-bluetooth/)。Android 핸드폰 은 일반적으로 클 라 이언 트 의 역할 로 SPP 프로 토 콜 장치(블 루 투 스 모듈 의 디지털 센서 연결)를 주동 적 으로 연결 합 니 다.연결 절 차 는 다음 과 같 습 니 다.
1.registerReceiver 등록 BroadcastReceiver 를 사용 하여 블 루 투 스 상태,검색 장치 등 정 보 를 얻 습 니 다.
2.BlueAdatper 검색 사용 하기;
3.BroadcastReceiver 의 onReceive()에서 검색 하여 얻 은 블 루 투 스 장치 정보(예 를 들 어 이름,MAC,RSSI)를 얻 습 니 다.
4.장치 의 MAC 주 소 를 통 해 BluetoothDevice 대상 을 만 듭 니 다.
5.BluetoothDevice 에서 BluetoothSocket 을 파생 시 켜 SOCKET 으로 읽 기와 쓰기 장 치 를 준비 합 니 다.
6.BluetoothSocket 의 createrfcommSocketToServiceRecord()방법 으로 연 결 된 프로 토 콜/서 비 스 를 선택 합 니 다.여 기 는 SPP(UUID:0001101-0000-1000-8000-0805F9B34FB)를 사용 합 니 다.
7.Connect 이후(짝 이 맞지 않 으 면 시스템 자동 알림)블 루 투 스 소켓 의 getInputStream()과 getOutputStream()을 사용 하여 블 루 투 스 장 치 를 읽 습 니 다.
먼저 본 프로그램 이 실행 하 는 효과 도 를 살 펴 보 겠 습 니 다.선택 한 SPP 프로 토 콜 장 치 는 하나의 심전도 채집 표 입 니 다.

본문의 코드 가 비교적 많 기 때문에 독 자 는 이것 을 눌 러 도 된다전체 코드 다운로드
이 프로그램 은 두 개의 Activity,즉 testBlueTooth 와 WaveDiagram 을 포함 하고 있 으 며,testBlueTooth 는 검색 하여 블 루 투 스 연결 을 만 드 는 것 이다.BluetoothAdapter,BluetoothDevice 와 BluetoothSocket 의 사용 은 매우 간단 하 다.앞의 세 가지 기능 을 제외 하고 시스템 에 메 시 지 를 보 내 블 루 투 스 정 보 를 제어 하고 얻 을 수 있다.예 를 들 어:
BroadcastReceiver 등록:

IntentFilter intent = new IntentFilter();
intent.addAction(BluetoothDevice.ACTION_FOUND);//  BroadcastReceiver       
intent.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
intent.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
intent.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(searchDevices, intent);

BroadcastReceiver 의 onReceive()에서 모든 메시지 의 내용 을 매 거 합 니 다.

String action = intent.getAction();
Bundle b = intent.getExtras();
Object[] lstName = b.keySet().toArray();

//              
for (int i = 0; i < lstName.length; i++) {
 String keyName = lstName[i].toString();
 Log.e(keyName, String.valueOf(b.get(keyName)));
}

DDMS 에 서 는 Bluetooth Device.ACTION 을 볼 수 있 습 니 다.FOUND 가 돌아 온 소식:

프로그램의 또 다른 Activity,즉 WaveDiagram 은 블 루 투 스 데 이 터 를 읽 고 파형 도 를 그 리 는 데 사 용 됩 니 다.JAVA 의 byte 의 수치 범 위 는 C/C++와 다 릅 니 다.Android 가 받 은 byte 데 이 터 는'&0xFF'로 처리 하고 C/C++등 값 의 데이터 로 전환 해 야 합 니 다.
마지막 으로 본 고 에서 기술 한 실례 가 여러분 의 안 드 로 이 드 개발 에 도움 과 참고 역할 을 할 수 있 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기