Android - Wi-Fi

Android consente alle applicazioni di accedere per visualizzare l'accesso allo stato delle connessioni wireless a un livello molto basso. L'applicazione può accedere a quasi tutte le informazioni di una connessione wifi.

Le informazioni a cui un'applicazione può accedere includono velocità di collegamento della rete connessa, indirizzo IP, stato di negoziazione e altre informazioni di rete. Le applicazioni possono anche scansionare, aggiungere, salvare, terminare e avviare connessioni Wi-Fi.

Android fornisce WifiManagerAPI per gestire tutti gli aspetti della connettività WIFI. Possiamo istanziare questa classe chiamandogetSystemServicemetodo. La sua sintassi è data di seguito:

WifiManager mainWifiObj;
mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);

Per eseguire la scansione di un elenco di reti wireless, è inoltre necessario registrare il proprio BroadcastReceiver. Può essere registrato utilizzandoregisterReceivermetodo con argomento dell'oggetto della classe ricevente. La sua sintassi è data di seguito:

class WifiScanReceiver extends BroadcastReceiver {
   public void onReceive(Context c, Intent intent) {
   }
}

WifiScanReceiver wifiReciever = new WifiScanReceiver();
registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

La scansione wifi può essere avviata chiamando il startScanmetodo della classe WifiManager. Questo metodo restituisce un elenco di oggetti ScanResult. Puoi accedere a qualsiasi oggetto chiamando il filegetmetodo di elenco. La sua sintassi è data di seguito:

List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
String data = wifiScanList.get(0).toString();

Oltre alla sola scansione, puoi avere un maggiore controllo sul tuo WIFI utilizzando i metodi definiti nella classe WifiManager. Sono elencati come segue:

Suor n Metodo e descrizione
1

addNetwork(WifiConfiguration config)

Questo metodo aggiunge una nuova descrizione di rete all'insieme di reti configurate.

2

createWifiLock(String tag)

Questo metodo crea un nuovo WifiLock.

3

disconnect()

Questo metodo si dissocia dal punto di accesso attualmente attivo.

4

enableNetwork(int netId, boolean disableOthers)

Questo metodo consente di associare una rete precedentemente configurata.

5

getWifiState()

Questo metodo ottiene lo stato abilitato Wi-Fi

6

isWifiEnabled()

Questo metodo restituisce se il Wi-Fi è abilitato o disabilitato.

7

setWifiEnabled(boolean enabled)

Questo metodo abilita o disabilita il Wi-Fi.

8

updateNetwork(WifiConfiguration config)

Questo metodo aggiorna la descrizione della rete di una rete configurata esistente.

Esempio

Ecco un esempio che dimostra l'uso del WIFI. Crea un'applicazione di base che apre il tuo wifi e chiude il tuo wifi

Per sperimentare questo esempio, è necessario eseguirlo su un dispositivo reale su cui è attivato il Wi-Fi.

Passi Descrizione
1 Utilizzerai Android Studio per creare un'applicazione Android con un pacchetto com.example.sairamkrishna.myapplication.
2 Modifica il file src / MainActivity.java per aggiungere il codice WebView.
3 Modifica res / layout / activity_main per aggiungere i rispettivi componenti XML
4 Modifica il file AndroidManifest.xml per aggiungere le autorizzazioni necessarie
5 Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati.

Di seguito è riportato il contenuto del file di attività principale modificato src/MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
   Button enableButton,disableButton;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      enableButton=(Button)findViewById(R.id.button1);
      disableButton=(Button)findViewById(R.id.button2);

      enableButton.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
            WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            wifi.setWifiEnabled(true);
         }
      });
		
      disableButton.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
            WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            wifi.setWifiEnabled(false);
         }
      });
   }
}

Di seguito è riportato il contenuto modificato del file xml res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
	
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
		
   <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginLeft="76dp"
      android:text="Enable Wifi"
      android:layout_centerVertical="true"
      android:layout_alignEnd="@+id/imageView" />

   <Button
      android:id="@+id/button2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Disable Wifi"
      android:layout_marginBottom="93dp"
      android:layout_alignParentBottom="true"
      android:layout_alignStart="@+id/imageView" />

</RelativeLayout>

Di seguito è riportato il contenuto di AndroidManifest.xml file.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Proviamo a eseguire la tua applicazione. Presumo che tu abbia collegato il tuo attuale dispositivo mobile Android al tuo computer. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Prima di avviare l'applicazione, Android Studio visualizzerà la seguente finestra per selezionare un'opzione in cui si desidera eseguire l'applicazione Android.

Seleziona il tuo dispositivo mobile come opzione e mostrerà la seguente immagine -

Ora fai clic sul pulsante Disabilita wifi. Quindi l'output di esempio dovrebbe essere così -