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

블루투스 중복연결처리 질문드립니다.

0 추천

 추울 겨울 고생많으십니다~

블루투스 채팅예제를 사용하여 연결은 잘되는데 

다시 연결할시에 연결실패가 뜹니다

연결상태에서 재연결시에 이미 연결상태입니다 토스트메시지를 띄워주고

기존 연결상태를 유지하려는게 목적입니다.

state메소드 만들어서 상태변수처리하고

이미 연결됬을시에 case STATE_CONNECTED: 로 들어가게하려는데

자꾸 익셉션처리로가네요

연결후에 다시 연결시 mstate찍어봤는데 STATE_CONNECTED인데 처리가 왜 안될까요..

public void run(){
            mbtAdapter.cancelDiscovery();
            Log.d(TAG, "상태는 : " + mState+"");
            try{
                    switch (mState){
                        case STATE_CONNECTING:
                            mmSocket.connect();
                            Log.d(TAG, "연결");
                            setState(STATE_CONNECTED);
                            break;
                        case STATE_CONNECTED:
                            mmSocket.close();
                            break;
                    }
            }catch (IOException connectException){
                connectionFailed();
                try {
                    Log.d(TAG, "연결실패");    <<연결되있는 상태에서 재연결시 이쪽으로만 갑니다
                                           
                    mmSocket.close();
                }catch (IOException closeException){
                    Log.e(TAG, "unable to close() socket during connection failure", closeException);
                }
                BTService.this.start();
                return;
 
            }
 
 
그리고 추가적인 궁금증이 저 구문이 처리가 되더라도
같은 다른 블루투스 모듈일경우에는 연결상태라도 재연결이 가능하게 하려는데
어느부분에서 처리해주는게 좋을까요.
예림이그코드좀바바 (2,470 포인트) 님이 2015년 1월 16일 질문
예림이그코드좀바바님이 2015년 1월 16일 수정

1개의 답변

+1 추천
 
채택된 답변
재연결의 정의가 뭔가요? 연결을 끊고 다시 연결하겠다는 건가요? 기존의 연결을 그대로 사용한다는건가요?

그리고 블루투스샘플코드 본지가 오래되서 잘은 기억이 안나지만, 해당 코드부분 아마 연결시도하는쓰레드

라고 생각되는데 왜 그안에서 상태체크를 하나요????

 

해당 코드가 쓰여진 클래스 자체가 커넥션 객체입니다. 그 클래스 밖에서 연결 상태체크를 하세요.

 

//추가합니다.

오랜만에 블투예제열어보네요 --;

BluetoothService <- 커넥션객체입니다.

MainActivity <- 여기서 블루투스연결상태 체크를 하세요.
익명사용자 님이 2015년 1월 16일 답변
예림이그코드좀바바님이 2015년 3월 2일 채택됨
에공 댓글달려하는순간 일이생겨서 이제 확인했네요
질문자 입장에서 질문이 명확하지않아 죄송합니다
메인액티비티쪽에서 체크를 해야하는군요 감사합니다.

메인액티비티에사 체크할때 간단하게 예좀 들어주실수있으시련지요..ㅠ
MainActivity에 onActivityResult있죠 거기 스위치문보면 REQUEST_CONNECT_DEVICE 있는데 여기에서 호출하는
btService.getDeviceInfo(data);로 실제 커넥션을 시도하게 되잖아요?

이 호출전에 btService에서 블루트스 state값 가져와서 확인후 btService가
연결된 상태면 btService.getDeviceInfo(data);를 호출할 필요가없겟죠?
연결된 btService그대로 쓰시면 되니깐요
헉 제가 궁금했던 부분만 딱 골라 설명해주셨네요
너무너무 감사합니다.
...