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

블루투스 예제 질문입니다

0 추천

 블루투스 예제를 따라해보면서 해보니 연결은 잘대는데 문제가

연결이 이미 되있을 경우 처리가 없는것 같더군요.. 

그래서 연결을 한번하고나서 연결을 또 할 경우 익셉션처리로 가버리더라고요..

 

 public void run(){
            mbtAdapter.cancelDiscovery();
            try{   
                     mmSocket.connect();
 
            }catch (IOException connectException){
                try {
                    Log.d(TAG, "연결실패");            <<< 연결이 되있고 다시 연결할 경우 이쪽으로만 처리됨
                    mmSocket.close();
                }catch (IOException closeException){
                    Log.e(TAG, "unable to close() socket during connection failure", closeException);
                }
                return;
 
            }
 
연결이 되있는 상태에서 다시 연결을 시도하는 방법이 없을까요
늅소리나는초보 님이 2015년 1월 15일 질문

2개의 답변

0 추천
try 로 갔을때 다시 열면 되지않나요?
nicehee (73,100 포인트) 님이 2015년 1월 15일 답변
잉? 다시요?
다시 오면 무조건 익셉션쪽으로 가는데 따로 다른처리를 할수있나요
0 추천
블루투스 채팅 샘플코드 보시면 현재 블루투스 커넥션 상태를 가져올 수 있을텐데요????

스태틱변수로 커넥션 상태 저장하고 있습니다. 확인해보세요.

연결 시도 하기 전에 현재 커넥션 상태를 체크해서 처리하시는게 옳은 방법이라 생각됩니다.

커넥션 상태를 가져와서 연결되있으면 커넥션 종료시키고 다시 커넥션 로직 동작시키시면 되겠죠??
익명사용자 님이 2015년 1월 15일 답변
넵 시도는 해봤습니다..
private static final int STATE_NONE = 0; // 아무 상태도 아님
private static final int STATE_LISTEN = 1; // 연결 준비 상태
private static final int STATE_CONNECTING = 2; // 연결 시도 상태
private static final int STATE_CONNECTED = 3; // 연결 상태

이렇게 해놓고
트라이쪽 부분에서
 mbtAdapter.cancelDiscovery();
            try{    
                     if(상태변수비교){
                     mmSocket.connect();
                     }  << 이렇게 해야 될거같은데 스태틱변수가 int형이라 참거짓비교도
                              할수없으니 어떤식으로 비교해야댈지 감이 잘안잡히네요..
                              상태변수로 아닐경우에 핸들러메시지보내서 핸들러쪽에서 다                     
                              시 메소드 처리해보려고하거든요.
 
            }
if(상태변수비교){
요기서 모든 상태값에 대한 처리를 다 해주어야겠지요
if(STATE_NONE 일때)
....
else if (STATE_LISTEN 일때)
....
....
자세한 설명 감사드립니다.
그런데 run메소드에서 연결처리를 하는데
if(변수)일 경우 true/false boolean형비교인데
블루투수 예제에 지정된 스태틱변수는 인트형이더라고요..
어떻게 비교를 해야할지 생각이 뒤죽박죽이네요 ㅠ
...