2012-04-04 54 views
5

的高级设置,我打开便携式WiFi热点由下面的代码:如何设置安卓wifihotspot

private void createWifiAccessPoint() { 
    WifiManager wifiManager = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE); 
    if(wifiManager.isWifiEnabled()) 
    { 
     wifiManager.setWifiEnabled(false);   
    }  
    Method[] wmMethods = wifiManager.getClass().getDeclaredMethods(); //Get all declared methods in WifiManager class  
    boolean methodFound=false; 
    for(Method method: wmMethods){ 
     if(method.getName().equals("setWifiApEnabled")){ 
      methodFound=true; 
      WifiConfiguration netConfig = new WifiConfiguration(); 
      netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); 
      netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
      netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
      netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
      netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
      netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
      netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
      netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
      try { 
       boolean apstatus=(Boolean) method.invoke(wifiManager, netConfig,true);   
       //statusView.setText("Creating a Wi-Fi Network \""+netConfig.SSID+"\""); 
       for (Method isWifiApEnabledmethod: wmMethods) 
       { 
        if(isWifiApEnabledmethod.getName().equals("isWifiApEnabled")){ 
         while(!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)){ 
         }; 
         for(Method method1: wmMethods){ 
          if(method1.getName().equals("getWifiApState")){ 
           int apstate; 
           apstate=(Integer)method1.invoke(wifiManager); 
           //     netConfig=(WifiConfiguration)method1.invoke(wifi); 
           //statusView.append("\nSSID:"+netConfig.SSID+"\nPassword:"+netConfig.preSharedKey+"\n"); 
          } 
         } 
        } 
       } 
       if(apstatus) 
       { 
        System.out.println("SUCCESSdddd"); 
        //statusView.append("\nAccess Point Created!"); 
        //finish(); 
        //Intent searchSensorsIntent = new Intent(this,SearchSensors.class);    
        //startActivity(searchSensorsIntent); 
       }else 
       { 
        System.out.println("FAILED"); 
        //statusView.append("\nAccess Point Creation failed!"); 
       } 
      } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
      } catch (IllegalAccessException e) { 
       e.printStackTrace(); 
      } catch (InvocationTargetException e) { 
       e.printStackTrace(); 
      } 
     }  
    } 
    if(!methodFound){ 
     //statusView.setText("Your phone's API does not contain setWifiApEnabled method to configure an access point"); 
    } 
} 

它为我.......热点开启......但也有先进的设置,通过点击“菜单”按钮....这里有一个问题...在LanSettings中DHCP被禁用,而Power Mode只有5分钟的工作....我希望DHCP tto被启用和PowerMode - “永远在线”...我如何解决它?

+0

我在运行2.3.5的HTC手机上有完全相同的问题。你找到解决方案吗? – Andy 2012-11-30 23:46:18

回答

1

您可能需要查看Android源代码才能找到答案。你的代码是一个能够连接并获得IP地址的设备吗?如果是这种情况,那么AP的DHCP正在工作。

就我个人而言,我甚至没有DHCP启用或禁用选项或ICS上的PowerMode。