2011-02-09 3 views
0

블루투스를 통해 Nexus One Android 휴대 전화를 다른 블루투스 Android 휴대 전화에 연결할 수 있습니다. 연결 용 입력 및 출력 스트림을 사용하고 내 요청을 작성하고 응답을 읽을 수 있습니다. 내 애플리케이션은 처리를 위해 실시간 데이터를 사용합니다. 통신을 위해 다른 소켓 (예 : 전용 소켓과 같은 종류)에 두 개의 입출력 스트림을 여는 방법이 있는지 궁금합니다. 그리고 그렇다면 어떻게 그것을 성취 할 수 있습니까? 모든 포인터가 도움이 될 것입니다 ...Android - 하나의 연결에 대해 여러 소켓 (입력 및 출력 스트림) 열기

mmSocket.connect();

공개 무효 연결() 버젼 : API 레벨 원격 장치에 연결하는 5 시도한다.

이 방법은 연결이 끊어 지거나 연결이 끊어 질 때까지 차단됩니다. 예외없이이 메소드가 리턴되면이 소켓은 이제 연결됩니다.

장치 검색이 진행되는 동안 원격 Bluetooth 장치에 대한 새 연결을 만들지 마십시오. 장치 검색은 Bluetooth 어댑터의 중량 절차이므로 장치 연결 속도가 크게 느려집니다. cancelDiscovery()를 사용하여 진행중인 검색을 취소합니다. 검색은 Activity에 의해 관리되지 않지만 시스템 서비스로 실행되므로 응용 프로그램은 직접 검색을 요청하지 않았더라도 항상 cancelDiscovery()를 호출해야합니다.

내 질문은 : 어떻게 두 개의 소켓을 사용하여 연결할 수 있습니까? 위의 함수는 소켓을 사용하여 연결하고 ... 연결 후 다른 소켓에 의해 다른 연결이 끊깁니다 ????

답변

2

물론 가능하지만 소켓에 대한 호출 차단을 사용한다고 추측합니다. 따라서 실시간으로 유용한 작업을 수행하기 위해 둘 이상의 스레드가 필요합니다. 이것은 통신하려는 경우 스레드간에 약간의 동기화가 필요하다는 것을 의미합니다.

Your'e 질문은 솔직히 약간 모호합니다. 그래서 당신이 조금 자격을 갖추지 않으면 좋은 대답을 얻지 못할 것이라고 생각합니다. 정확히 무엇을하고 싶습니까? 왜 하나 이상의 소켓이 필요합니까? 두 번째 소켓은 무엇입니까?

+0

두 번째 입/출력 스트림이 블루투스 장치에 자주 발생하지 않는 명령을 보내고있는 동안 자주 폴링하기 위해 첫 번째 입/출력 스트림을 원합니다. –

+0

그 설명에서 나는 왜 하나 이상의 연결이 필요한지 알지 못합니다. 오래 실행되고 시간이 겹칠 필요가있는 명령이 있습니다. – sandos

+0

내 자주 폴링 스레드가 오래 실행되고 있는데, 자주 실행되지 않는 명령을 실행하기 전에 끊기를 원하지 않습니다. –