2016-09-05 10 views
3

하나의 기기에서 다른 기기로 연결하고 싶습니다. 하나씩. 그래서 내가 할 장치가 연결되어 있는지 확인하는 것입니다 if(myDevice.status == 0) 만약 그렇다면, 그룹을 제거 manager.removeGroup(channel, new ActionListener().WIFI P2P REMOVE GROUP

이 문제는 몇 번 이렇게하면 removeGroup() 메서드가 onFailure()로 이동하여이 오류 (Disconnect failed. Reason :2)가 "처리 중"이라는 것을 의미합니다.

프레임 워크가 BUSY가되지 않게하려면 어떻게해야합니까? 다른 장치에 아무런 문제없이 새로운 연결을 시작하기 위해 두 장치간에 적절한 연결 해제 방법이 있습니까?

답변

3

Wifi P2p는 새 그룹을 만들 때마다 영구 그룹을 만듭니다. 그래서 그냥 removeGroup() 작동하지 않습니다. DeletePersistantGroup 메소드 (숨김)를 사용해야합니다. 리플렉션을 사용하여이 메소드에서 호출을 호출합니다.

private void deletePersistentGroups(){ 
    try { 
     Method[] methods = WifiP2pManager.class.getMethods(); 
     for (int i = 0; i < methods.length; i++) { 
      if (methods[i].getName().equals("deletePersistentGroup")) { 
       // Delete any persistent group 
       for (int netid = 0; netid < 32; netid++) { 
        methods[i].invoke(manager, channel, netid, null); 
       } 
      } 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
}