Android 에서 BLE 프로 그래 밍 분석 (2)
5428 단어 BLE
1. 데이터 전송
본 고 는 BLE 장치 간 의 데이터 전송 을 소개 할 것 이 며, 먼저 데이터 의 전송 이다.데이터 전송 은 Characteristic 을 통 해 이 루어 집 니 다. 데 이 터 를 보 내 는 Characteristic 은 쓰기 권한 이 있어 야 합 니 다. 즉, BluetoothGatt Characteristic 류 의 mProperties 속성 은 다음 과 같은 두 가지 중 하나 여야 합 니 다.
/**
* :
*/
public static final int PROPERTY_WRITE_NO_RESPONSE = 0x04;
/**
* :
*/
public static final int PROPERTY_WRITE = 0x08;
BLE 의 연결 과정 에서 연결 이 성공 하면 BluetoothGatt 형식 변 수 를 되 돌려 줍 니 다 (이전 글 의 2.7 단계 참조). 이 종 류 는 BLE 의 주요 동작 을 패키지 합 니 다.데 이 터 를 보 내 는 데 필요 한 Characteristic 은 BLE 장치 연결 이 성공 한 후 Service 를 가 져 오 는 과정 에서 얻 을 수 있 습 니 다 (이전 글 의 2.10 단계 참조). 따라서 BLE 의 데이터 전송 은 다음 과 같 습 니 다.
@Override
public boolean writeCharacteristic(ICharacteristicBle chrBle) {
return mBleGatt.writeCharacteristic((BluetoothGattCharacteristic)chrBle);
}
Characteristic 의 알림 리 셋 을 얻 기 위해 서 는 데 이 터 를 보 내기 전에 이 Characteristic 의 알림 을 사용 해 야 합 니 다.
/**
* characteristicde
*
* @param chrBle characteristic
* @param enable
* @return
*/
public boolean setCharacteristicNotification(ICharacteristicBle chrBle, boolean enable) {
return mBaseBle.setCharacteristicNotification(chrBle, enable);
}
BLE 의 기록 결과 리 셋 함수:
/**
* characteristics
* , characteristics . APP
* , , APP .
*
* @param bleGatt GATT , {@link BluetoothGatt#writeCharacteristic}
* @param bleChrc characteristics
* @param status , {@link BluetoothGatt#GATT_SUCCESS}
*/
public void onCharacteristicWrite(BluetoothGatt bleGatt, BluetoothGattCharacteristic bleChrc, int status) {
/** */
if (status == BluetoothGatt.GATT_SUCCESS) {
try {
byte[] mByte = bleChrc.getValue();
StringBuilder mStrBuilder = new StringBuilder(mByte.length);
/** byte */
for (byte mByteChar : mByte) {
mStrBuilder.append(String.format("%02x", mByteChar));
} /** end of for (byte mByteChar : mByte) */
LogUtil.info(TAG, "device chrc write data: " + mStrBuilder.toString());
} catch (Exception e) {
LogUtil.error(TAG, "device chrc write data transform error");
e.printStackTrace();
}
} /** end of if (status == BluetoothGatt.GATT_SUCCESS) */
}
이 반전 함수 에서 발송 결 과 를 처리 합 니 다.
2. 데이터 수신
데이터 수신 방식 은 두 가지 가 있 습 니 다. 읽 기와 알림 입 니 다.읽 는 방식 은 속도 가 느 리 지만 결 과 는 안정 적 이 고 알림 방식 은 반대 입 니 다.실제 사용 과정 에서 알림 방식 을 많이 사용한다.읽 기 방법 을 먼저 소개 하 겠 습 니 다. 읽 기 방식 으로 읽 어야 할 Characteristic 은 읽 기 권한 이 있 습 니 다.
/**
*
*/
public static final int PROPERTY_READ = 0x02;
읽 는 함수:
@Override
public boolean readCharacteristic(ICharacteristicBle chrBle) {
return mBleGatt.readCharacteristic((BluetoothGattCharacteristic)chrBle.getImpl());
}
읽 은 결 과 는 읽 은 리 셋 함수 에서 얻 을 수 있 습 니 다:
/**
* characteristics
*
* @param GATT , {@link BluetoothGatt#readCharacteristic}
* @param bleChrc characteristics
* @param status , {@link BluetoothGatt#GATT_SUCCESS}
*/
public void onCharacteristicRead(BluetoothGatt bleGatt, BluetoothGattCharacteristic bleChrc, int status) {
/** */
if (status == BluetoothGatt.GATT_SUCCESS) {
byte[] mByte = bleChrc.getValue();
StringBuilder mStrBuilder = new StringBuilder(mByte.length);
/** byte */
for (byte mByteChar : mByte) {
mStrBuilder.append(String.format("%02x", mByteChar));
} /** end of for (byte mByteChar : mByte) */
LogUtil.info(TAG, "device chrc change data: " + mStrBuilder.toString());
} /** end of if (status == BluetoothGatt.GATT_SUCCESS) */
}
다음은 알림 방식 입 니 다. 그 중에서 알림 방식 의 설정 함 수 는 바로 위의 알림 함수 입 니 다. 설정 이 성공 한 후에 알림 리 셋 함 수 를 통 해 결 과 를 얻 을 수 있 습 니 다./**
* characteristics
*
* @param bleGatt characteristics GATT
* @param bleChrc characteristics
*/
public void onCharacteristicChanged(BluetoothGatt bleGatt, BluetoothGattCharacteristic bleChrc) {
byte[] mByte = bleChrc.getValue();
StringBuilder mStrBuilder = new StringBuilder(mByte.length);
/** byte */
for (byte mByteChar : mByte) {
mStrBuilder.append(String.format("%02x", mByteChar));
} /** end of for (byte mByteChar : mByte) */
LogUtil.info(TAG, "device chrc change data: " + mStrBuilder.toString());
}
이렇게 해서 BLE 의 통신 과정 이 완성 되 었 다.BLE 샘플 2 개 첨부
1. Google 공식 BLE 사례
https://github.com/googlesamples/android-BluetoothLeGatt
2. 그리스 에서 무선 센서 네트워크 (WSN) 를 연구 하 는 박사 가 쓴 BLE 오픈 소스 라 이브 러 리
https://github.com/alt236/Bluetooth-LE-Library---Android 재 미 있 지만 제 대학원 졸업 논문 도 WSN 과 관련 이 있 습 니 다. 지금 은 BLE 와 관련 된 안 드 로 이 드 프로 그래 밍 을 하고 있 습 니 다. 지금 보면 WSN 에서 가장 핫 한 것 은 블 루 투 스 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Noodl과 micro : 비트를 연결하여 메시지를 교환합니다.※이 기사는 Noodl2.0을 사용 아래에 도전! - Noodl에서 메시지 보내기 - micro:bit의 버튼을 누르면 Noodl에 뭔가 보내기 ※micro:bit의 설정으로, 「No Pairing Required:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.