블루투스 설정

앱이 블루투스 또는 저전력 블루투스를 통해 통신하려면 블루투스가 기기에서 지원되는지 확인하고 지원되는 경우 블루투스가 사용 설정되어 있는지 확인해야 합니다. 이 검사는 <uses-feature.../> 매니페스트 파일 항목의 android:required 속성이 false로 설정된 경우에만 필요합니다.

블루투스가 지원되지 않는 경우 블루투스 기능을 적절하게 사용 중지해야 합니다. 블루투스가 지원되지만 사용 중지된 경우 사용자에게 앱을 떠나지 않고 블루투스를 사용 설정하도록 요청할 수 있습니다.

첫 번째 단계는 다음 API를 사용하기 위해 매니페스트 파일에 블루투스 권한을 추가하는 것입니다.

권한이 배치되면 BluetoothAdapter를 사용하여 블루투스 설정을 2단계로 완료합니다.

  1. 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
    }
    
  2. 블루투스를 활성화합니다.

    이제 블루투스를 활성화해야 합니다. 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_STATEEXTRA_PREVIOUS_STATE가 포함됩니다. 이러한 추가 필드에 가능한 값은 STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF, STATE_OFF입니다. 앱이 블루투스 상태의 런타임 변경사항을 감지해야 하는 경우 이 브로드캐스트를 수신 대기하는 것이 유용할 수 있습니다.

팁: 검색 기능을 사용 설정하면 블루투스가 자동으로 사용 설정됩니다. 블루투스 활동을 실행하기 전에 기기 검색 기능을 일관되게 사용 설정하려면 이전 단계의 2단계를 건너뛰어도 됩니다.

기기에서 블루투스가 사용 설정되면 클래식 블루투스와 저전력 블루투스를 모두 사용할 수 있습니다.

블루투스 클래식의 경우 블루투스 기기를 찾아 블루투스 기기에 연결할 수 있습니다.

저전력 블루투스의 경우 BLE 기기를 찾고, GATT 서버에 연결하고, BLE 데이터를 전송할 수 있습니다.