2016-07-26 11 views
0

나는 핫스팟을 통해 2 개의 전화를 연결해야하는 위치를 수행하고 있습니다.핫스팟에 연결

2 개의 버튼 (송신 및 수신)이 있습니다. 사람이 RECEIVE 버튼을 누르면 핫스팟이 활성화됩니다. 어떤 사람이 SEND 단추를 누르면 해당 핫스팟에 연결해야합니다.

이미 많은 연구를했는데 코드를 작성하는 데 많은 도움이되었지만 여전히 작동하지 않습니다. addNetwork 메서드는 유효한 ID를 반환하고 enableNetwork는 true를 반환하지만 여전히 핫스팟 네트워크에 연결하지 않습니다. 그것은 다른 것들을 비활성화하지만 핫스팟에 연결하지 않습니다. 버튼에 대한

다음

있는 청취자 :

 protected void setUpButtonListeners(){ 
     Log.i("SETUP BUTTON LISTENERS", "SETTING UP THE BUTTON LISTENERS"); 

    wificonfiguration=new WifiConfiguration(); 
    setUpTheWifiConfiguration(wificonfiguration); 
    wifimanager = (WifiManager) HighwayActivity.this.getSystemService(HighwayActivity.this.WIFI_SERVICE); 
    wifimanager.setWifiEnabled(true); 

    Button sendButton= (Button) findViewById(R.id.send); 
    Button receiveButton = (Button) findViewById(R.id.receive); 
    sendButton.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) 
     { 
       netID = wifimanager.addNetwork(wificonfiguration); 
       Log.e("NET ID ::: ", "O net id is : "+ netID); 

       boolean asad=wifimanager.disconnect(); 
       Log.e("wifi.manager disconnect"," bool is "+asad); 
       boolean aux = wifimanager.enableNetwork(netID, true); 
       Log.e("enableNetwork", "bool aux : " + aux); 
       boolean reconnect=wifimanager.reconnect(); 
       Log.e("Recconect ::: ", " recnect is : "+ reconnect); 

      wifireceiver=new WifiReceiver(); 
      registerReceiver(wifireceiver, new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION)); 

     } 
    }); 

    receiveButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View arg0) 
     { 

      try 
      { 
       wifimanager.setWifiEnabled(false); 
       //USING REFLECTION TO GET METHOD "SetWifiAPEnabled" 
       Method method=wifimanager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); 
       method.invoke(wifimanager, wificonfiguration, true); 

       Toast.makeText(HighwayActivity.this, "Craeted a hotspot with the SSID : " + wificonfiguration.SSID, Toast.LENGTH_SHORT).show(); 

      } 
      catch (NoSuchMethodException e) 
      { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      catch (IllegalArgumentException e) 
      { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      catch (IllegalAccessException e) 
      { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      catch (InvocationTargetException e) 
      { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }); 

} 

내가 설정, 무선 랜을 통해 이동하면 내가 그것을 가입 할 수 있기 때문에 핫스팟이 잘 만들어

등 여기

내 코드입니다 여기

내 무선 랜 구성입니다 : (난 둘 다 시도)

protected void setUpTheWifiConfiguration(WifiConfiguration wificonfiguration){ 
    wificonfiguration.SSID = "\"" + mySSID + "\""; 

    wificonfiguration.preSharedKey = "\"" + "pwteste123A"+ "\""; 
    /* 
    wificonfiguration.status = WifiConfiguration.Status.ENABLED; 
    wificonfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
    wificonfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
    wificonfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
    // wificonfiguration.hiddenSSID = true; 
    wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
    wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
    wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); 
    wificonfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
    wificonfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
    wificonfiguration.priority = 40; 
    */ 
    // No security 
    wificonfiguration.status = WifiConfiguration.Status.DISABLED; 
    wificonfiguration.priority = 40; 

       wificonfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
    wificonfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
    wificonfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
    wificonfiguration.allowedAuthAlgorithms.clear(); 
    wificonfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
    wificonfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
    wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
    wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); 
    wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
} 

답변

0

내가 ALR eady는 문제를 해결했습니다.

우선 클라이언트 측 SSID에 2 개의 인용 부호를 추가해야했습니다. 그런 다음 WifiConfiguration에서 GroupCiphers를 모두 제거하고 상태를 사용하도록 변경해야하며 우선 순위를 지정할 필요가 없었습니다.

  WifiConfiguration conf = new WifiConfiguration(); 
      conf.SSID = "\"" + "TinyBox" + "\""; 

      conf.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); 

      conf.preSharedKey="\"password\""; 
      conf.hiddenSSID = true; 
      conf.status = WifiConfiguration.Status.ENABLED; 

      conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
      conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
      conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 

      int netid=wifi.addNetwork(conf); 

      List<WifiConfiguration> list = wifi.getConfiguredNetworks(); 
      for(WifiConfiguration i : list) { 

       if(i.SSID != null && i.SSID.equals("\"" + "TinyBox" + "\"")) { 
        Log.d("cONFIG nETOWKRS", "Found List of COnfigured Networks Tinybox"); 
        try { 
         boolean b=wifi.disconnect(); 

         boolean enab=wifi.enableNetwork(i.networkId, true); 

         wifi.reconnect(); 
         break; 
        } 
        catch (Exception e) { 
         e.printStackTrace(); 
        } 

       } 
      } 

내가이 답변을 게시의 미래

+0

덕분에 다른 사람 도움이되기를 바랍니다 , 감사합니다. 다른 장치에서 핫스팟을 만드는 방법을 코드를 공유해주십시오. 감사. –