마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

블루투스 연결중복제어 질문드립니다..

0 추천

 안드로이드 펍의 고수분들께서 많이 조언해주셔서 

상태변수로 연결중복처리를 막기는 성공했는데 문제는

한번 연결되면 다른 디바이스하고 연결도 막아버리게 코드를 짯습니다..

if (resultCode == Activity.RESULT_OK) {
                    //블루투스 활성화(RESULT_OK상태시)
 
                    switch (btService.mState) {
                        case BTService.STATE_NONE:
                        btService.getDeviceInfo(data);
                        //btService클래스의  디바이스 정보처리 getDevicerIngo메서드 호출
                    Log.d(TAG, BTService.STATE_CONNECTING+"");
                    }
                }
                break;

 

그래서 여러키워드삽질로 검색해본결과 기기연결을 확인해주는 메소드가있더군요

getProfileConnectionState메소드던데 이것으로 이미연결된 모듈 새로연결하려는

모듈연결 여부를 비교하여 기존연결을 끊고 다른모듈로 연결을 바꿀수있을까요

예림이그코드좀바바 (2,470 포인트) 님이 2015년 1월 16일 질문

1개의 답변

+1 추천
 
채택된 답변

자.. 하고싶으신게 기존 연결된 디바이스와 새로 연결하려는 디바이스가 같은 녀석이면 기존 연결유지,

기존 연결된 디바이스와 새로 연결하려는 디바이스가 다른 녀석이면 기존 연결 해지후 새로운 녀석과 재연결 이건가요?

 

일단 디바이스를 비교하시려면 기존 샘플코드로직 변경이 필요합니다. 애초에 프로젝트 파실때, 샘플코드에서 필요한 부분만

참고하시는게 옳은 방법이라 생각되지만,, 이미 지금 이 까지 오셨으니 한번 진행해보겠습니다.

 

BluetoothService클래스에 getDeviceInfo메서드로 갑니다. 

public void getDeviceInfo(BluetoothDevice device ) {
	connect(device);
}

위 코드처럼 인텐트에서 데이터를 빼오는 부분을 제거합니다. 인텐트에서 데이터를 빼오는 부분은

MainActivity클래스 onActivityResult로 옮겨주세요.

아래와 같이 변경합니다. 

if (resultCode == Activity.RESULT_OK) {
//블루투스 활성화(RESULT_OK상태시)
String address = data.getExtras().getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
if (btService.getAddress().equals(address)) {
같으면 동일기기
}else{
틀리면 다른기기
btService기존연결해지및초기화
BluetoothDevice device = btAdapter.getRemoteDevice(address);
btService.getDeviceInfo(device);
}

switch (btService.mState) {
case BTService.STATE_NONE:
BluetoothDevice device = btAdapter.getRemoteDevice(address);
btService.getDeviceInfo(device);
//btService클래스의 디바이스 정보처리 getDevicerIngo메서드호출
Log.d(TAG, BTService.STATE_CONNECTING+"");
}
}
break;

자 이런 느낌으로 해주세요. 

띠깔라1 (4,200 포인트) 님이 2015년 1월 16일 답변
예림이그코드좀바바님이 2015년 3월 2일 채택됨
정말 감사드립니다.
답변해주신분 말씀대로 필요한것만 가져다 변경해서 써야하는데
미숙해서 부끄럽네요
...