Tethering and Portable Hotspot 설정 항목에서 볼 수 있듯이 Android 2.2 (Froyo)에서 Wi-Fi 핫스팟을 만들기 위해 필요한 API 호출은 무엇입니까?Android 2.2 wifi 핫스팟 API
답변
이 방법 이름 setWifiApEnabled
을 찾습니다 WifiManager
가 WifiManager
선언 방법을 얻을 수있는 반사를 사용하여받은 후 반사 :
를 사용
private boolean setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled);
호출하고 WifiManager
를 통해 호출 할 수 있습니다 객체
이 API는 @hide로 표시되어 있으므로 현재는 직접 사용할 수 없지만 o n WifiManager의 AIDL에 액세스 할 수있게하십시오!
예는 될 수 있습니다
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Method[] wmMethods = wifi.getClass().getDeclaredMethods();
for(Method method: wmMethods){
if(method.getName().equals("setWifiApEnabled")){
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = "\"PROVAAP\"";
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 {
method.invoke(wifi, netConfig,true);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
그것은 작동하지만 난 내 자신과 현재 구성을 변경하고 활성 AP의 현재 WifiConfiguration 빈 configuration.Why에 나를 운전 점점 수없는 이유는 무엇입니까?
좋은 조사 – Schildmeijer
당신은 항상 반사를 통해 그것들에 접근 할 수 있습니다! –
@ markov00 : 제안 된 방법은 Android SDK의 일부가 아닙니다. 기간을 사용하지 마십시오. – CommonsWare
WiFi 핫스팟을 작성하는 API 호출이없는 것 같습니다. - 미안 해요!
API 8 이상에서 작동합니다. 나는 심하게 다른 버전을 사용하여 아래 (또는 위), 그리고 같은 문제 markov00에 달려 들어갔다; 휴대용 Wi-Fi AP에 기본 Wi-Fi 구성을로드 할 수 없습니다. 나는 다른 곳에서 해결책을 찾았다. 당신이 솔루션을 좋아한다면이 답
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Method[] wmMethods = wifi.getClass().getDeclaredMethods();
for (Method method: wmMethods){
if (method.getName().equals("setWifiApEnabled")){
try {
// just nullify WifiConfiguration to load the default configuration ;)
method.invoke(wifi, null, true);
} catch (IllegalArgumentException e){
e.printStackTrace();
} catch (IllegalAccessException e){
e.printStackTrace();
} catch (InvocationTargetException e){
e.printStackTrace();
}
}
}
난 아직 활성화/테 더링을 비활성화에 대한 API가없는 믿을 수로 인정 된 경우
, 그것은 좋은 것입니다. 그것이 존재하기를 희망하지만, 아직 문서화되지 않았습니다. – Sney
문서화 : http://www.androidjavadoc.com/2.3/android/net/wifi/WifiManager.html 공식 API의 일부가 아닙니다. –