0

J'ai essayé de changer le canal de diffusion hotsport mobile dans android par programmation en utilisant le code suivant, mais il ne change aucune valeur/canal.Android: Comment modifier le canal de diffusion hotspot mobile par programme?

Remarque: Je peux modifier le SSID et le mot de passe par programme.
J'ai essayé de régler le canal 11, encore il ne fonctionne pas ...

Merci à l'avance

Mon code est

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(); 
} 

J'ai essayé alternative ainsi:

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, lien ci-dessus est pour Activer/désactiver WiFi HotSpot par programmation, mais ma question est sur le changement de canal de diffusion de hotspot mobile spécifiquement .. ??? Merci, – kgsharathkumar

+0

kgsharathkumar, avez-vous les canaux de diffusion hotspot disponibles, encore? Cela devrait être la première étape, non? –

Répondre

1

Essayez cela fonctionne pour 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

Pensez à ajouter quelques explications - et à indenter correctement votre code source. Pas besoin de bordure de 15 caractères sur le côté gauche! – GhostCat

0

Votre question je suis entièrement d'accord, mais il n'y a pas d'API sont avilabl e pour lire/écrire canal de diffusion hotspot mobile dans android par programme.

0

Vous ne pouvez pas par programme.

Je suis entièrement d'accord avec votre question, mais dans Android, aucune API n'est disponible pour lire/écrire par programmation un canal de diffusion hotspot mobile.