Autore Topic: [facile]Info sulla connessione Wifi  (Letto 5591 volte)

Offline Zufuru

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: +6
    • Mostra profilo
  • Dispositivo Android:
    Htc Wildfire
  • Sistema operativo:
    Fedora
[facile]Info sulla connessione Wifi
« il: 18 Ottobre 2010, 20:03:41 CEST »
+6
Livello di difficoltà: facile
Target SDK: 2.1
Link al file compresso del progetto eclipse: file in allegato

Questo è il mio primo tutorial, quindi scusate se alcune parti non sono abbastanza comprensibili

Il tutorial ha come obbiettivo quello di mostrare come accedere alle informazioni relative ad una generica connessione Wifi, ad esempio
indirizzo IP, SSID, velocità della linea, livello del segnale, MAC addres ecc...


Operazione preliminare consiste nell'aggiungere le permission nell'AndroidManifest.xml:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.MyIP"
     android:versionCode="1"
     android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MyIP"
                 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>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

</manifest>


A questo punto possiamo osservare in dettaglio come ricavare le informazioni che ci interessano.
Il programma ovviamente non fa nulla di speciale, ma le varie informazioni che vengono rese disponibili
potrebbero essere utilizzate per scopi ben più importanti.
Siccome il codice è molto semplice mi limito ad esporre la guida tramite i commenti inseriti nel sorgente

Codice (Java): [Seleziona]
package com.MyIP;

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


public class MyIP extends Activity {
   
    private String ips = null;
    private Button close = null;
    private WifiManager wifi;
    private WifiInfo info;
    private TextView ipv;
    private TextView text;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
       
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
   
    wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); // istanzio l'oggetto wifi(classe WifiManager)
        info = wifi.getConnectionInfo(); // istanzio l'oggetto info(classe WifiInfo)
        this.close = (Button)this.findViewById(R.id.button); //istanzio l'oggetto close(classe Button)
       
        close.setOnClickListener(new OnClickListener() { // se il pusante viene premuto faccio in modo che venga richiamato il metodo chiuditutto()
        @Override
        public void onClick(View arg0) {
        chiuditutto();
        }});
       
        if (info.getBSSID() != null) { // verifico che la connessione si attiva, in particolare il metodo getBSSID() restituisce valore nullo se la connessione non è attiva
            this.ipv = (TextView)this.findViewById(R.id.addres);
            this.text = (TextView)this.findViewById(R.id.text);
            this.text.setText("Terminale connesso a " + info.getSSID()+ " con IP: "); //qui viene richiamato il metodo getSSID() che restituisce una stringa, in particolare l'identificativo dell'SSID
            int ip = info.getIpAddress(); // il metodo getIpAddress() restituisce un intero che rappresenta l'indirizzo IP, ovviamente non è la tipica rappresentazione a cui siamo abituati ex.: 127.0.0.1
            this.ips = ((( ip & 0xFF )) + "." + (( ip >> 8 ) & 0xFF ) + "." + (( ip >> 16 ) & 0xFF ) + "." + (( ip >> 24 ) & 0xFF ));// converto l'intero nella tipica notazione, ho adottato questo sistema un po grezzo poiche non conosco un altro metodo piu semplice
            this.ipv.setText(ips);
        }
        else {// se la connessione non è attiva
            this.ipv = (TextView)this.findViewById(R.id.addres);
            this.ipv.setText("Nessuna connessione Wifi attiva!");
        }
       
       
    }

    /**
     *
     */

    protected void chiuditutto() { // chiude l'applicazione
           this.finish();
           return;
    }
   


}

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:orientation="vertical" >


        <TextView android:id="@+id/text"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                   android:text="Ip connessione Wifi:" />

        <TextView android:id="@+id/addres"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:textSize ="20sp"
                   android:text="" />

        <Button android:id="@+id/button"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="Close" />

</LinearLayout>



Bibliografia:
  • Developer Anroid.
  • Reto Meier., PROFESSIONAL ANDROID  2 APPLICATION DEVELOPMENT , Wiley

Offline g4b0

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: 0
    • Mostra profilo
    • gabo 3.0
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    Debian Testing
Re:[facile]Info sulla connessione Wifi
« Risposta #1 il: 22 Settembre 2011, 16:38:11 CEST »
0
Ottimo, proprio quello che mi serviva!
--
g4b0, linux user n. 369000
http://brosulo.net