2017-03-27 1 views
1

wifi-direct를 통해 서로 연결할 두 개의 Android 기기가 있습니다.Android Wifi-direct 그룹 및 서비스

하나는 표시 장치 (장치 A)이므로 터치 스크린이나 마우스와 같은 입력 장치가 없습니다. 다른 하나는 휴대 전화 (기기 B)입니다. 따라서 장치 A가 장치 B에 대한 연결을 시작하는 장치가되어 팝업 승인 대화 상자가 장치 B에 표시됩니다. wifi-direct 그룹에 대한 조사 및 테스트를 수행했습니다. 두 장치를 함께 연결하는 데 성공했습니다. 불행히도 장치 A는 디스플레이 전용이므로 호환 가능한 응용 프로그램을 실행하는 wifi-direct 그룹에만 연결되도록 장치 A에 일정 수준의 지능형 장치를 제공하고 싶습니다. 나는 와이파이 직접 서비스를 통해 이것을하려고 노력하고있다.

장치 B가 서비스를 브로드 캐스트하고 장치 A가 해당 서비스를 청취 할 계획입니다. 장치 A는 서비스를 찾으면 장치 B에 연결합니다. 그러면 장치 A는 자체 서비스를 알리고 장치 B, 즉 휴대 전화는 응용 프로그램 통신을 계속할 수 있음을 알게됩니다.

지금까지 wifi-direct 그룹이 만들어지기 전에 서비스를 볼 수있는 것으로 나타났습니다. 내가 와이파이 다이렉트가 작동하는 방법에 대한 몇 가지 질문 부탁드립니다 : 하나의 장치가 서비스를보고

  • 경우 만 서비스를 방송 것 장치를 포함하는 그룹에 연결되어 있지를, 나는 당신이 연결할 수없는 가정 직접 서비스/장치에? 그것은 항상 i) 그룹에 연결 한 다음 ii) 장치에 연결합니다.
  • 그렇다면 서비스 브로드 캐스터와 같은 그룹에 속하지 않고 서비스를 볼 수 있기 때문에 서비스를 브로드 캐스팅하는 장치가 내 장치의 현재 Wi-Fi 그룹에 속해 있으며 연결하고 있음을 어떻게 알 수 있습니까? 같은 장치에? 그룹에 현재 연결된 피어의 "동료 목록"을 얻을 수 있지만 "서비스 방송사"== "이 특정 피어"라는 연관성을 만드는 좋은 방법이 있습니까?

감사합니다.

답변

0

나는 올바른 길을 가고 있다고 생각합니다.

첫 번째 질문에 대해 : 장치는 로컬 서비스를 광고하는 모든 피어에 연결할 수 있습니다. 동일한 그룹에 속하지 않더라도 장치가 다른 장치에 연결되면 다른 그룹이나 새 그룹이 자동으로 구성됩니다. 서비스 피어를 얻는 방법을 설명하는 다음 질문의 대답을 참조하십시오.

두 번째 질문 : get peers list를 호출하지 않고도 발견 된 서비스를 특정 피어와 연결할 수 있습니다.

는 서비스 검색 시작하기 전에 로컬 서비스 리스너를 구현 : :이 방법을 따를 수 있습니다 그들 각각은 WifiP2pDevice device 객체를 반환

WifiP2pManager.DnsSdServiceResponseListener dnsListener = new WifiP2pManager.DnsSdServiceResponseListener() { 
      @Override 
      public void onDnsSdServiceAvailable(String instanceName, String registrationType, WifiP2pDevice device) { 
      // instanceName is service name and device is the print information 
}}; 


WifiP2pManager.DnsSdTxtRecordListener txtListener = new WifiP2pManager.DnsSdTxtRecordListener() { 
      @Override 
      public void onDnsSdTxtRecordAvailable(String fullDomain, Map record, WifiP2pDevice device) { 
      // here we get the service published information in the record map object 
}}; 

공지 사항, 당신은 관리자를 사용하여 장치에 연결이 개체를 사용할 수 있습니다 connect 메소드를 호출하고 서비스 목록을 해당 디바이스에 맵핑하십시오.

호프가 도움이 되길 바랍니다.

+0

설명 답에 감사드립니다. 그래도이 점에 대해 좀 더 명확히 해보고 싶습니다. "장치가 로컬 서비스를 알리는 피어에 연결할 수 있습니다.동일한 그룹에 속하지 않더라도 장치가 다른 장치에 연결될 때 그들은 자동으로 또 다른/새로운 그룹을 형성합니다 " 그룹에 연결하는 장치가 현재 그룹 리더와 연결되도록해야합니까 아니면 그냥 피어에 연결하면 모든 것이 자체 정렬됩니다 . – yhBoey

+0

좋은 점은 예, 그룹 소유자와의 연결을 보장해야합니다. 그렇지 않으면 새 그룹을 만듭니다. 일반적으로 그룹을 설정하면 모든 장치가 서비스 광고를 해제합니다. 그룹 소유자 만 사용할 수있는 서비스입니다. 또는 더 나은 해결책은 모든 장치가 서비스 광고를 끄고 서버가 이미 설정된 서비스가 있고이 장치가 소유자임을 이해하는 데 사용할 수있는 다른 이름으로 새 서비스를 시작한다는 것입니다 . – JAD