데모 호스트 버전

만물이 서로 연결된 사물인터넷 시대가 도래했고, ble Bluetooth 개발은 그 속에서 쉬운 역할을 하고 있다. 요즘 마침 한가하니까 짬을 내서 이 부분의 지식점을 정리해 보세요.

Ble Bluetooth 통신과 관련된 클라이언트 (시작, 스캔, 연결, 데이터 송수신, 하도급 및 패킷) 및 서버 (브로드캐스트 데이터 초기화, 브로드캐스트 시작, 서비스 구성, 서버 콜백 작업) 의 전체 프로세스와 몇 가지 일반적인 문제, 즉 밟힌 구덩이가 있습니다.

예를 들면

1. 안드로이드나 휴대폰의 적응에 따라 Bluetooth 장치를 스캔할 수 없습니다.

2.ble bluetooth 연결어떻게 133 오류를 피할 수 있습니까?

1 회 쓰기 데이터의 크기는 20 바이트로 제한됩니다. 긴 데이터는 어떻게 전송합니까?

Bluetooth 는 기존 (클래식) Bluetooth 와 저전력 Bluetooth Ble (Bluetooth 저전력) 으로 나눌 수 있으며 개발 API 는 다릅니다. 이 문서에서는 BLE Bluetooth 개발에 초점을 맞추고 있습니다. 전통적인 Bluetooth 가 발달하지 않았기 때문에 스스로 이해할 필요가 있습니다.

기존 bluetooth 및 BLE 저전력 bluetooth 에 비해 빠른 검색, 빠른 연결, 초저전력 및 데이터 전송이 주요 특징입니다.

고객

컴퓨터 네트워크 서버

안드로이드 4.3 (API 등급 18) 은 BLE 의 핵심 기능을 도입하고 적절한 API 를 제공하기 시작했습니다. 응용 프로그램은 이러한 API 를 통해 Bluetooth 장치, 쿼리 서비스, 읽기 및 쓰기 장치의 특징을 스캔합니다.

BLE Bluetooth 프로토콜은 GATT 프로토콜로, BLE 관련 클래스가 많지 않습니다. 모두 android.bluetooth 패키지와 android.bluetooth.le 패키지의 여러 클래스에 있습니다.

Android.bluetooth 입니다.

。 BluetoothGattService 에는 고유 UUID 로 식별되는 여러 특성 (속성 특성 값) 이 포함되어 있습니다.

。 BluetoothGattCharacteristic 에는 고유한 UUID 로 식별되는 단일 값과 여러 설명자가 포함되어 있습니다.

。 BluetoothGattDescriptor 는 피쳐를 설명하고 고유 UUID 를 id 로 포함합니다.

。 Bluetooth Gatt 클라이언트 관련

。 BluetoothGattCallback 클라이언트 연결 콜백

。 BluetoothGattServer 서버 관련

。 BluetoothGattServerCallback 서버 연결 콜백

Android.bluetooth.le 입니다.

에 대한 브로드캐스트 콜백. 광고 콜백 서버

방송 데이터. 데이터 서버를 게시하다.

의 브로드캐스트 설정입니다. 광고 설정 서버.

방송. 블루투스 서버

。 Bluetooth 스캐너 클라이언트 스캔 관련 (Android5.0 에 추가됨)

。 ScanCallback 클라이언트 검사 콜백

。 ScanFilter 클라이언트 스캔 필터링

스캔 결과에 대한 브로드캐스트 데이터. ScanRecord 클라이언트.

。 ScanResult 클라이언트 검사 결과

。 스캔 설정 클라이언트 스캔 설정

BLE 장치는 클라이언트 (호스트/중앙 장치/중앙 장치라고도 함) 와 서버 (슬레이브/주변 장치/주변 장치라고도 함) 의 두 가지 유형으로 나뉩니다.

클라이언트의 핵심 클래스는 BluetoothGatt 입니다.

서버의 핵심 클래스는 BluetoothGattServer 와 BluetoothLeAdvertiser 입니다.

BLE 데이터의 핵심 범주는 bluetooth GATT 문자 유형과 bluetooth GATT 설명자 유형입니다.

다음은 클라이언트 및 서버 개발 단계에 대한 자세한 설명입니다.

안드로이드 휴대폰은 블루투스 권한을 포함하고 있으며 블루투스 개발은 AndroidManifest.xml 파일에 권한 선언을 추가해야 합니다.

장치를 검색하기 전에 휴대폰의 블루투스 켜기를 요청해야 합니다.

참고: BLE 장치 주소는 동적이며 (일정한 간격으로 변경됨) 클래식 Bluetooth 장치는 공장에서 고정됩니다!

BLE 장치를 스캔하여 장치 이름별로 대상 장치를 구분하고, 다음 단계로 대상 장치에 연결하고, 장치를 연결하기 전에 Bluetooth 검색을 중지합니다. 검색을 중단하는 데는 일반적으로 시간이 걸립니다. 검색 중지 기능을 호출하고 100ms 를 지연시켜 시스템이 Bluetooth 장치 검색을 완전히 중지할 수 있도록 하는 것이 좋습니다. 검색을 중지한 후 연결 프로세스를 시작합니다.

BLE Bluetooth 의 연결 방법은 비교적 간단합니다. connectGatt 메서드를 호출하면 됩니다.

매개 변수 설명

장치와 연결이 설정되면 장치와 통신하고 전체 통신 프로세스는 BluetoothGattCallback 의 비동기 콜백 함수에서 수행됩니다.

BluetoothGattCallback 의 기본 콜백 함수는 다음과 같습니다.

위의 콜백 함수는 ble 개발에 필수적입니다.

대상 장치를 호출한 후. ConnectGATT (context, false, gattcallback), 시스템은 BLE bluetooth 장치에 대한 연결을 적극적으로 시작합니다. 디바이스에 연결되면 onConnectionStateChange 메서드를 리콜하고 다음과 같이 처리합니다.

새 상태 = = bluetooth GATT 를 확인합니다. State _ connected 는 현재 장치가 성공적으로 연결되었음을 나타냅니다.

Mbluetoothgatt.discoverservices ();

BLE 장치 서비스 스캔은 안드로이드 시스템 BLE Bluetooth 개발의 중요한 단계입니다. 일반적으로 장치 연결이 성공한 후 호출되고 장치 서비스를 스캔한 후 onServicesDiscovered () 함수를 리콜합니다. 기능 원형은 다음과 같습니다.

BLE Bluetooth 개발은 주로 통신을 담당하는 BluetoothGattService 에 의해 수행됩니다. 언제 통신서비스로 불리는지. 통신 서비스는 하드웨어 엔지니어가 제공한 UUID 를 통해 제공됩니다. 수집 방법은 다음과 같습니다.

구체적인 작동 방식은 다음과 같습니다.

모니터링을 켜면 장치와 통신하는 첫 번째 데이터 채널이 설정됩니다. BLE 개발에서는 클라이언트가 모니터링을 성공적으로 설정한 경우에만 서버와 데이터를 보내고 받을 수 있습니다. 모니터링을 켜는 방법은 다음과 같습니다.

BLE 한 번에 기록되는 데이터의 크기는 제한되어 있으며 일반적으로 20 바이트입니다. RequestMTU 를 통해 추가할 수 있지만 성공을 보장할 수는 없습니다. 하도급은 하도급 계약을 정의해야 하는 솔루션입니다. 각 패킷의 크기가 20 바이트라고 가정하면 두 가지 패킷, 즉 패킷과 비패킷이 있습니다. 한 패킷의 경우 처음 두 바이트는 패키지의 일련 번호를 나타내고 나머지는 데이터로 채워집니다. 패킷이 아닌 경우 주로 일부 제어 정보를 보냅니다.

모니터링이 성공하면 writeCharacteristic 에 데이터를 기록하여 서버와의 통신을 가능하게 할 수 있습니다. 쓰기 방법은 다음과 같습니다.

여기서 value 는 일반적으로 장치가 통신하는 블루투스 통신 프로토콜에 의해 내용이 규정된 16 진수 형식의 명령입니다.

쓰기 명령이 성공하면 BluetoothGattCallback 의 onCharacteristicWrite () 메서드가 호출되어 데이터가 다음 컴퓨터로 전송되었음을 나타냅니다.

전송되는 데이터가 통신 프로토콜을 준수하는 경우 서버는 해당 데이터를 클라이언트에 복원합니다. 전송되는 데이터는 다음과 같이 onCharacteristicChanged () 메서드를 리콜하여 얻습니다.

서버에 명령을 전송하여 서버의 응답 데이터를 얻으면 장치와의 통신 프로세스를 완료할 수 있습니다.

장치와의 통신이 완료되면 장치와의 연결을 끊는 것이 중요합니다. 다음 메서드를 호출하여 장치와의 연결을 끊습니다.

소스 코드는 CSDN 에 업로드되며 필요한 경우 참조할 수 있습니다.

= = = = = = = = =>;; Android Bluetooth Ble 통신을 위한 Demo 샘플 소스 코드-데이터 스캔, 연결, 전송 및 수신, 하도급 및 패키지.

BLE 한 번에 기록되는 데이터의 크기는 제한되어 있으며 일반적으로 20 바이트입니다. RequestMTU 를 통해 추가할 수 있지만 성공을 보장할 수는 없습니다. 하도급은 하도급 계약을 정의해야 하는 솔루션입니다. 각 패킷의 크기가 20 바이트라고 가정하면 두 가지 패킷, 즉 패킷과 비패킷이 있습니다. 한 패킷의 경우 처음 두 바이트는 패키지의 일련 번호를 나타내고 나머지는 데이터로 채워집니다. 패킷이 아닌 경우 주로 일부 제어 정보를 보냅니다.

전체 프로세스는 다음과 같습니다.

1. 통신 프로토콜을 다음과 같이 정의합니다 (이는 단지 예일 뿐이며 프로젝트 요구에 따라 확장할 수 있음).

2 패키지 범용 데이터 전송 인터페이스 (포장 풀기)

인터페이스는 전송할 데이터 내용에 따라 최대 바이트 (일반적으로 20 바이트) 로 나누어 대기열에 넣습니다. 분할한 후 대기열에서 꺼낸 다음 순차적으로 보냅니다.

3. 패키지 범용 수신 데이터 인터페이스 (패키지)

인터페이스는 수신된 데이터에 따라 프로토콜에 정의된 대로 데이터 길이가 완전한 패킷인지 여부를 분석하고, 그렇지 않은 경우 각 메시지를 누적합니다.

4. 전체 패킷을 분석하여 비즈니스 논리 처리를 수행합니다.

암호화 및 암호 해독도 프로토콜에 도입 될 수 있습니다. 알고리즘 매개변수를 선택할 때 암호화 길이는 압축 해제 및 그룹화에 영향을 주지 않고 원본 데이터 길이와 일치해야 합니다.

일반적으로 안드로이드 버전의 적응과 다른 ROM 모델의 권한 (샤오미/홍미, 화웨이/영광 등) 입니다. ) (EMUI, MIUI, ColorOS 등. ).

블루투스의 발전에는 많은 문제가 있다. 마음을 가라앉히고 문제를 분석해야 한다면 분명히 해결할 수 있을 것이다. 가자.

上篇: CPU 제조업체와 모델은 무엇입니까? 下篇: 왜 GBA 중기병 1 쓰레기괴프랭크가 만질 수 없는 걸까?
관련 내용