본문 바로가기
스마트 장치 개발

MAUI BTLE InTheHand Client Sample Code

by leo21c 2025. 10. 14.

https://github.com/inthehand/32feet

 

GitHub - inthehand/32feet: Personal Area Networking for .NET. Open source and professionally supported

Personal Area Networking for .NET. Open source and professionally supported - inthehand/32feet

github.com

InTheHand 라이브러리 특징

  1. API 스타일: IObservable 대신 표준 async/await와 이벤트 핸들러(+=, -=)를 사용합니다. 이는 많은 C# 개발자에게 더 친숙할 수 있습니다.
  2. 스캔 방식: DiscoverDevices()는 호출 시점에 발견된 장치 목록을 동기적으로 반환합니다. 실시간으로 목록을 업데이트하려면 예제처럼 주기적으로 호출하는 로직을 직접 구현해야 합니다.
  3. 객체 모델:
    • BluetoothDeviceInfo: 스캔 시 발견되는 장치의 기본 정보(이름, 주소 등)를 담고 있습니다.
    • BluetoothDevice: 실제 연결하고 통신하는 데 사용되는 객체입니다. BluetoothDevice.FromId()를 통해 BluetoothDeviceInfo의 주소로 객체를 가져옵니다.
    • GattService, GattCharacteristic: BLE의 계층 구조를 그대로 따르는 객체들입니다.
  4. 이벤트 처리: Notification 수신(CharacteristicValueChanged)이나 연결 끊김(GattServerDisconnected)과 같은 비동기 이벤트는 C#의 표준 이벤트를 통해 처리합니다. ViewModel이 해제될 때 이벤트 핸들러를 반드시 제거(-=)하여 메모리 누수를 방지해야 합니다.
  5. 권한 관리: Shiny와 달리 InTheHand는 권한 요청을 자동으로 처리하지 않습니다. MAUI의 Permissions API를 사용하여 개발자가 직접 권한을 확인하고 요청해야 합니다.
  • 설치할 패키지: InTheHand.Net.Bluetooth

이전에 Shiny.NET 라이브러리는 적용할 때 시행착오가 많았는데 위에서 제시한 특징과 같이 이전 C# 사용자들이 보기에 쉬운 구조로 되어 있어 금방 적용을 할 수가 있었다.

 

이벤트 핸드러를 이용하기 때문에 Windows WPF .NET으로 개발한 소스 코드와 유사하게 적용이 가능해서 좋았다.

 Shiny.NET에서는 윈도우로 실행하면 BTLE 장치 검색이 안되었는데 이 라이브러리는 Windows, Android 모두 작동이 되는 것을 확인했다. 따라서 MAUI를 사용해서 좀도 다양한 장치에서 실행이 가능할 것 같다.

 

<첨부 파일>

InTheHandClient.zip
0.36MB

LIST