앱이 블루투스 또는 저전력 블루투스를 통해 통신하려면 블루투스가 기기에서 지원되는지 확인하고 지원되는 경우 블루투스가 사용 설정되어 있는지 확인해야 합니다. 이 검사는 <uses-feature.../>
매니페스트 파일 항목의 android:required
속성이 false
로 설정된 경우에만 필요합니다.
블루투스가 지원되지 않는 경우 블루투스 기능을 적절하게 사용 중지해야 합니다. 블루투스가 지원되지만 사용 중지된 경우 사용자에게 앱을 떠나지 않고 블루투스를 사용 설정하도록 요청할 수 있습니다.
첫 번째 단계는 다음 API를 사용하기 위해 매니페스트 파일에 블루투스 권한을 추가하는 것입니다.
권한이 배치되면 BluetoothAdapter
를 사용하여 블루투스 설정을 2단계로 완료합니다.
BluetoothAdapter
를 가져옵니다.BluetoothAdapter
는 모든 블루투스 활동에 필요합니다.BluetoothAdapter
는 기기의 자체 블루투스 어댑터 (블루투스 라디오)를 나타냅니다.BluetoothAdapter
를 가져오려면 먼저Context
가 있어야 합니다. 이 컨텍스트를 사용하여BluetoothManager
시스템 서비스의 인스턴스를 가져옵니다.BluetoothManager#getAdapter
를 호출하면BluetoothAdapter
객체가 제공됩니다.getAdapter()
가 null을 반환하면 기기는 블루투스를 지원하지 않는 것입니다.예:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
블루투스를 활성화합니다.
이제 블루투스를 활성화해야 합니다.
isEnabled()
를 호출하여 현재 블루투스가 사용 설정되어 있는지 확인합니다. 이 메서드가 false를 반환하면 블루투스가 사용 중지된 것입니다. 블루투스 사용 설정을 요청하려면startActivityForResult()
를 호출하여ACTION_REQUEST_ENABLE
인텐트 작업을 전달합니다. 이 호출은 앱을 중지하지 않고 시스템 설정을 통해 블루투스 사용 설정을 요청합니다.예:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
그림 1과 같이 블루투스를 사용 설정할 수 있는 사용자 권한을 요청하는 대화상자가 표시됩니다. 사용자가 권한을 부여하면 시스템은 블루투스를 사용 설정하기 시작하고 프로세스가 완료되거나 실패하면 포커스가 앱으로 돌아갑니다.
그림 1. 블루투스 사용 설정 대화상자
startActivityForResult()
에 전달된 REQUEST_ENABLE_BT
상수는 로컬에서 정의된 정수이며 0 이상이어야 합니다. 시스템은 onActivityResult()
구현에서 이 상수를 requestCode
매개변수로 다시 전달합니다.
블루투스 사용 설정에 성공하면 활동이 onActivityResult()
콜백에서 RESULT_OK
결과 코드를 수신합니다. 오류로 인해 블루투스가 사용 설정되지 않았거나 사용자가 '거부'를 응답한 경우 결과 코드는 RESULT_CANCELED
입니다.
선택적으로 앱은 블루투스 상태가 변경될 때마다 시스템이 브로드캐스트하는 ACTION_STATE_CHANGED
브로드캐스트 인텐트를 수신 대기할 수도 있습니다. 이 브로드캐스트에는 신규 및 이전 블루투스 상태를 각각 포함하는 추가 필드 EXTRA_STATE
및 EXTRA_PREVIOUS_STATE
가 포함됩니다. 이러한 추가 필드에 가능한 값은 STATE_TURNING_ON
, STATE_ON
, STATE_TURNING_OFF
, STATE_OFF
입니다.
앱이 블루투스 상태의 런타임 변경사항을 감지해야 하는 경우 이 브로드캐스트를 수신 대기하는 것이 유용할 수 있습니다.
기기에서 블루투스가 사용 설정되면 클래식 블루투스와 저전력 블루투스를 모두 사용할 수 있습니다.
블루투스 클래식의 경우 블루투스 기기를 찾아 블루투스 기기에 연결할 수 있습니다.
저전력 블루투스의 경우 BLE 기기를 찾고, GATT 서버에 연결하고, BLE 데이터를 전송할 수 있습니다.