2014-07-21 6 views
1

P2P 연결 (그룹)을 만들려고하는데 안드로이드 장치에 하나의 소유자와 클라이언트 만 있습니다.P2P GO가 다른 피어 (두 번째 클라이언트) 연결을 수락하는 것을 금지하는 방법은 무엇입니까?

이유는 내 GO 기기가 두 번째 피어 연결 (그냥 초대 된 창을 누르면)을 허용하면 P2P 연결 변경 이벤트 (연결 끊김)가 발생하기 때문입니다. 정상적인 P2P 연결 해제 이벤트와이 상황을 구분할 수 없습니다.

내 첫 번째 솔루션은 첫 번째 연결 후에도 모든 연결/연결 끊기 이벤트를 무시하지만 다른 사이트 효과가 발생합니다.

답변

0

나는 해결책을 찾았다 고 생각합니다.

WifiP2pGroup을 사용하면 연결 끊김 이벤트를받을 때 GO와 피어가 실제로 있는지 확인할 수 있습니다.

실제 P2P 연결 끊기 이벤트가 수신되면 GO 또는 피어가 발견되지 않으며 그 반대도 마찬가지입니다.

예 : 어떤 오해가있는 경우

else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) { 
... 
WifiP2pGroup p2pGroup = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_GROUP); 
... 
if (p2pGroup != null) { 
    if (p2pGroup.getOwner() != null) { 
     Log.d(TAG, "Go address: " + p2pGroup.getOwner().deviceAddress); 
    } 
    else { 
     Log.d(TAG, "p2pGroup getOwner = null"); 
     return false; 
    } 

    Collection<WifiP2pDevice> peerList = p2pGroup.getClientList(); 
    ArrayList<WifiP2pDevice> list = new ArrayList<WifiP2pDevice>(peerList); 

    Log.d(TAG, "p2pGroup list size = " + list.size()); 
    if (list.size() <= 0) { 
     return false; 
    } 

    ///* 
    String host = null; 
    for (int i = 1; i < list.size(); i++) { 
    host = list.get(i).deviceAddress; 
    Log.d(TAG, "peer #" + i + " address: " + host); 
    } 
    //*/ 
    } 
    else { 
     Log.d(TAG, "p2pGroup = null"); 
      return false; 
    } 

말해주십시오. 읽어 주셔서 감사합니다.