BluetoothAdapter 클래스의 enable()라는 메소드를 통해서 Bluetooth를 강제적으로 활성화 할수 있으나

사용자로 하여금 선택할 수 있도록 하는 것이 더 바람직하다.


Google의 Android API Reference에서도 public boolean enable () 메소드에 대한 설명 가운데는

다음과 같이 사용자의 명백한 행동 없이

강제적으로 Bluetooth를 활성화시키지 말라고 얘기하고 있다.


Turn on the local Bluetooth adapter—do not use without explicit user action to turn on Bluetooth.


이때 Bluetooth를 활성화 하는 방법으로 Intent를 통해서 안드로이드 시스템에게 요청해서 

안드로이드 시스템이 사용자에게 다이얼로그 창을 띄워서 사용자가 선택하게 하고

사용자가 Bluetooth를 활성화하도록 선택을 하면 안드로이드 시스템이 Bluetooth를 

활성화 시키도록 하는 방법이 있다.

이때 BluetoothAdapter.ACTION_REQUEST_ENABLE라는 action을 Intent를 통해서

안드로이드 시스템에게 요청을 하면 된다.


Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivity(enableBtIntent)라고 해도 되나 사용자가 어떤 선택을 했느냐에 따라서

그에 맞는 어떤 행동을 해야할 필요가 있기때문에 startActivityForResult()를 사용했다.

사용자의 선택 여부를 통보받는 곳이 protected void onActivityResult() 메소드를 통해서이다.


ENABLE_BT가 전역변수를 다음과 같이 선언되어 있다고 할 때

private static final int ENABLE_BT = 1;


아래는 안드로이드 시스템에게 Bluetooth 활성화 여부를 사용자에게 묻고

그 결과에 따라 활성화를 하도록 하는 코드이다.


startActivityForResult(enableBtIntent, ENABLE_BT);


사용자의 선택결과를 통보 받기 위해서는 onActivityResult()를 이용하면 된다.


@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data){

if (requestCode == ENABLE_BT  

&& resultCode == Activity.RESULT_CANCELED){

Toast.makeText(this, "취소 했습니다", 1).show();

                finish();

} else if (requestCode == ENABLE_BT 

&& resultCode == Activity.RESULT_OK){

Toast.makeText(this, "블루투스를 활성화합니다.", 1).show();

  }

}



+ Recent posts