2016-08-24 11 views
0

Я попытался изменить мобильный широковещательный канал hotsport в android программным путем, используя следующий код, но не меняя никакого значения/канала.Android: Как программно изменить канал вещания мобильного хот-спота?

Примечание: Я могу изменить SSID и пароль программно.
Я попытался установить канал 11, Тем не менее он не работает ...

Спасибо заранее

Мой код

public void HotspotChannelWrite() { 
    WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE); 

    if(wifiManager.isWifiEnabled()) 
    { 
     wifiManager.setWifiEnabled(false); 
    } 
    netConfig = new WifiConfiguration(); 
    netConfig.SSID = "TipturInfo"; 
    netConfig.preSharedKey = "Sharath"; 
    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.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
    netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
    netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
    try { 

     Method setWifiApMethod = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); 
     boolean apstatus=(Boolean) setWifiApMethod.invoke(wifiManager, netConfig,true); 

     Method isWifiApEnabledmethod = wifiManager.getClass().getMethod("isWifiApEnabled"); 
     while(!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)){}; 

     Method getWifiApStateMethod = wifiManager.getClass().getMethod("getWifiApState"); 
     int apstate=(Integer)getWifiApStateMethod.invoke(wifiManager); 

     Method getWifiApConfigurationMethod = wifiManager.getClass().getMethod("getWifiApConfiguration"); 
     netConfig=(WifiConfiguration)getWifiApConfigurationMethod.invoke(wifiManager); 

     Log.i("Writing HotspotData", "\nSSID:"+netConfig.SSID+"\nPassword:"+netConfig.preSharedKey+"\n"); 

     // For Channel change 
     Field wcAdhocFreq = WifiConfiguration.class.getField("frequency"); 
     int freq = 2462; // default to channel 11 
     wcAdhocFreq.setInt(netConfig, freq); 
     Log.i("HotspotData Channel", "\n Frequence:"+freq); 
     Log.i("HotspotData Channel", "\n Frequence:"+wcAdhocFreq); 

     // For Saving Data 
     wifiManager.saveConfiguration(); 

    } catch (IllegalFormatException ife) { 
     ife.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    wifiManager.saveConfiguration(); 
} 

Я попробовал альтернативный путь, а также:

Field wcFreq = WifiConfiguration.class.getField("channel"); 
     wcFreq.setInt(netConfig,11); 
+0

http://stackoverflow.com/questions/6394599/android-turn-on-off-wifi-hotspot-programmatically –

+1

@Adnanul, выше ссылка на включите/выключите Wi-Fi HotSpot программно, но мой вопрос заключается в том, что вы меняете мобильный широковещательный канал мобильной связи ... ??? Спасибо, – kgsharathkumar

+0

kgsharathkumar, есть ли у вас доступные каналы вещания в горячих точках? это должен быть первый шаг, не так ли? –

ответ

1

Попробуйте, работает Android 7,0

   Method getWifiApConfigurationMethod = wifiManager.getClass().getMethod("getWifiApConfiguration"); 
       netConfig=(WifiConfiguration)getWifiApConfigurationMethod.invoke(wifiManager); 

       //Log.i("Writing HotspotData", "\nSSID:" + netConfig.SSID + "\nPassword:" + netConfig.preSharedKey + "\n"); 

       Field wcBand = WifiConfiguration.class.getField("apBand"); 
       int vb = wcBand.getInt(netConfig); 
       Log.i("Band was", "val=" + vb); 
       wcBand.setInt(netConfig, 2); // 2Ghz 

       // For Channel change 
       Field wcFreq = WifiConfiguration.class.getField("apChannel"); 
       int val = wcFreq.getInt(netConfig); 
       Log.i("Config was", "val=" + val); 
       wcFreq.setInt(netConfig,11); // channel 11 

       Method setWifiApConfigurationMethod = wifiManager.getClass().getMethod("setWifiApConfiguration", WifiConfiguration.class); 
       setWifiApConfigurationMethod.invoke(wifiManager, netConfig); 

       // For Saving Data 
       wifiManager.saveConfiguration(); 
+0

Подумайте о добавлении некоторых объяснений - и правильно отпечатайте исходный код. Нет необходимости в 15 символах с левой стороны! – GhostCat

0

Ваш вопрос, я полностью согласился, но API не является avilabl e для чтения/записи мобильного широковещательного канала hotspot в android программным путем.

0

Вы не можете программно.

Я полностью согласен с вашим вопросом, но в Android нет API-интерфейсов для чтения/записи мобильного канала хотспота.