안드로이드 블루투스 서비스 예제

선언해야 하는 다른 권한은 ACCESS_COARSE_LOCATION 또는 ACCESS_FINE_LOCATION입니다. Bluetooth 스캔을 사용하여 사용자의 위치에 대한 정보를 수집할 수 있으므로 위치 권한이 필요합니다. 이 정보는 사용자의 기기뿐만 아니라 상점 및 대중 교통 시설과 같은 위치에서 사용 중이던 Bluetooth 비콘에서 제공될 수 있습니다. 안드로이드 응용 프로그램에서 켜기 / 끄기 블루투스에 대한 자세한 내용은,이 안드로이드 블루투스 켜기 / 예제와 함께 꺼져 확인하십시오. 앱이 Bluetooth를 통해 데이터를 교환하려면 데이터를 교환할 원격 장치를 찾아야 합니다. 즉, Android 플랫폼에는 Bluetooth 네트워크 스택에 대한 지원이 포함되어 있어 장치가 다른 Bluetooth 장치와 무선으로 데이터를 교환할 수 있습니다. 응용 프로그램 프레임 워크는 안드로이드 블루투스 API를 통해 블루투스 기능에 대한 액세스를 제공합니다. 이러한 API를 사용하면 애플리케이션이 다른 Bluetooth 장치에 무선으로 연결되므로 지점 간 및 멀티포인트 무선 기능을 사용할 수 있습니다. 다음은 BLE 스캔 결과를 제공하는 데 사용되는 인터페이스인 BluetoothAdapter.LeScanCallback의 구현입니다: Android 3.0(API 수준 11)부터 응용 프로그램은 미리 정의된 공급업체별 AT 명령의 시스템 브로드캐스트를 수신하도록 등록할 수 있습니다.

헤드셋으로 전송됩니다(예: 플랜트로닉스 +XEVENT 명령). 예를 들어 응용 프로그램은 연결된 장치의 배터리 수준을 나타내는 브로드캐스트를 수신하고 사용자에게 알리거나 필요에 따라 다른 작업을 수행할 수 있습니다. ACTION_VENDOR_SPECIFIC_HEADSET_EVENT 의도에 대한 브로드캐스트 수신기를 만들어 헤드셋에 대한 공급업체별 AT 명령을 처리합니다. 일반적으로 들어오는 연결에 대한 수신 청취가 완료되는 즉시 BluetoothServerSocket을 닫아야 합니다. 이 예제에서는 BluetoothSocket이 구입되는 즉시 close()가 호출됩니다. 스레드에서 해당 서버 소켓에서 수신 대기를 중지해야 하는 경우 개인 BluetoothSocket을 닫을 수 있는 공용 메서드를 제공할 수도 있습니다. 참고: 블루투스 LE 장치에 대해서만 스캔하거나 Bluetooth에 설명된 대로 클래식 블루투스 장치에 대해서만 스캔할 수 있습니다. Bluetooth LE와 클래식 장치를 동시에 스캔할 수 없습니다.

getDefaultAdapter() 메서드가 NULL을 반환하는 경우 장치는 블루투스를 지원하지 않으며 모든 블루투스 기능을 비활성화 할 수 있습니다. 안드로이드에서 Bluetooth는 통신 네트워크 프로토콜로, 장치가 무선으로 연결하여 다른 Bluetooth 장치와 데이터를 교환할 수 있습니다. 현재 기기에서 Bluetooth를 사용할 수 없는 경우 좋은 사용자 환경을 제공하기 위해 Bluetooth를 기반으로 하는 앱의 모든 기능을 비활성화해야 합니다. 당신이 원하는 마지막 것은 사용자가 이러한 기능에 액세스하려고, 그들이 작동하지 않는 것을 발견하고 이후에 응용 프로그램이 손상되었다고 주장 부정적인 리뷰를 남겨. 장치에서 블루투스를 사용할 수 있고 활성화되어 있는지 확인합니다. 그렇지 않은 경우 Bluetooth를 사용하도록 설정하는 사용자 권한을 요청하는 대화 상자를 표시합니다: accept() 호출은 차단 호출이므로 응용 프로그램이 다른 사용자 상호 작용에 계속 응답할 수 있도록 기본 활동 UI 스레드에서 실행되어서는 안 됩니다. 일반적으로 응용 프로그램에서 관리하는 새 스레드에서 BluetoothServerSocket 또는 BluetoothSocket과 관련된 모든 작업을 수행하는 것이 좋습니다.