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();
}
}
'Android' 카테고리의 다른 글
안드로이드에서 객체(object) 정렬(sort) 하기 (0) | 2016.07.07 |
---|---|
adb를 이용해서 로그캣(logcat)을 파일로 저장하기 (0) | 2016.06.14 |
안드로이드(Android) strings.xml에 HTML 코드 넣기 (0) | 2016.04.01 |
안드로이드 Material design icon 다운로드 받기 (0) | 2016.01.18 |
Handler를 이용해서 특정 시간 후에 특정 작업을 실행시키기 (0) | 2015.12.28 |