Autore Topic: Leggere connessioni wifi da lisview  (Letto 373 volte)

Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Leggere connessioni wifi da lisview
« il: 20 Giugno 2013, 12:26:50 CEST »
0
Hola, sto creando un'applicazione che mi fa vedere le connessioni wifi nei paraggi e a quale sono connesso attualmente. Il tutto servirà poi per creare un dialog con la gestione del wifi tramite orario (timepicker). Ora però ho un piccolo "problemino". La lista delle connessioni mi appare in una textview unica. Vorrei creare una list view con le connessioni separate cosi da poterle anche rendere cliccabili e poi possibilmente riuscire a connettermi a quella cliccata(ma questo è il passo sucessivo). Il codice delle info l'ho trovato online quindi non saprei come fare per "trasferire" tutto nella list view. Vi posto il codice.

Codice (Java): [Seleziona]
package com.pkg.wifimanager;
 
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.Wifimanager;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import java.util.Calendar;
import java.util.List;

    public class MainActivity extends Activity implements OnClickListener {

        private String ips = null;
        private WifiManager wifi;
        private WifiInfo info;
        private TextView ipv;
        private TextView text;
       
        TextView mainText;
        WifiManager mainWifi;
        WifiReceiver receiverWifi;
        List<ScanResult> wifiList;
        StringBuilder sb = new StringBuilder();

        static final int TIME_DIALOG_ID = 1111;
        private TextView output;
        public Button btnClick;
     
        private int hour;
        private int minute;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
           
           
            mainText = (TextView) findViewById(R.id.mainText);
           
            // Initiate wifi service manager
            mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
             
            // Check for wifi is disabled
            if (mainWifi.isWifiEnabled() == false)
                 {  
                     // If wifi disabled then enable it
                     Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled",
                     Toast.LENGTH_LONG).show();
                     
                     mainWifi.setWifiEnabled(true);
                 }
             
            // wifi scaned value broadcast receiver
            receiverWifi = new WifiReceiver();
             
            // Register broadcast receiver
            // Broacast receiver will automatically call when number of wifi connections changed
            registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
            mainWifi.startScan();
            mainText.setText("Ricerca reti Wi-Fi in corso...");
           
            /// Wifi Info ///
            wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); // istanzio l'oggetto wifi(classe WifiManager)
            info = wifi.getConnectionInfo(); // istanzio l'oggetto info(classe WifiInfo)
             
     
            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("Dispositivo connesso a " + info.getSSID()); //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!");
            }
            //// FINE /////
            output = (TextView) findViewById(R.id.output);
           
            /********* display current time on screen Start ********/
             
               final Calendar c = Calendar.getInstance();
               // Current Hour
               hour = c.get(Calendar.HOUR_OF_DAY);
               // Current Minute
               minute = c.get(Calendar.MINUTE);
               
               // Append in a StringBuilder
               StringBuilder outputMsg = new StringBuilder().append(utilTime(hour)).append(":")
               .append(utilTime(minute));
               
               // set current time into output textview
               output.setText(outputMsg);
               
            /********* display current time on screen End ********/
               
               // Add Button Click Listener
               addButtonClickListener();  
           
        }
       
       
        public boolean onCreateOptionsMenu(Menu menu) {
            menu.add(0, 0, 0, "Refresh");
            return super.onCreateOptionsMenu(menu);
        }
     
        public boolean onMenuItemSelected(int featureId, MenuItem item) {
            mainWifi.startScan();
            mainText.setText("Inizio Ricerca");
            return super.onMenuItemSelected(featureId, item);
        }
     
        protected void onPause() {
            unregisterReceiver(receiverWifi);
            super.onPause();
        }
     
        protected void onResume() {
            registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
            super.onResume();
        }
         
        // Broadcast receiver class called its receive method
        // when number of wifi connections changed
         
        class WifiReceiver extends BroadcastReceiver {
             
            // This method call when number of wifi connections changed
            public void onReceive(Context c, Intent intent) {
                 
                sb = new StringBuilder();
                wifiList = mainWifi.getScanResults();
                sb.append("\n Connessioni trovate :"+wifiList.size()+"\n\n");
                 
                for(int i = 0; i < wifiList.size(); i++){
                     
                    sb.append(" "+new Integer(i+1).toString() + ". ");
                    sb.append((wifiList.get(i)).toString());
                    sb.append("\n\n");
                }
                 
                mainText.setText(sb);  
            }
             
        }
       
       ////// DIALOG TIMEPICKER ////////
        public void addButtonClickListener() {
                 
            btnClick = (Button) findViewById(R.id.btnClick);
     
            btnClick.setOnClickListener(new OnClickListener() {
     
                @Override
                public void onClick(View v) {
     
                    showDialog(TIME_DIALOG_ID);
     
                }
     
            });
     
        }

     
        @Override
        protected Dialog onCreateDialog(int id) {
            switch (id) {
            case TIME_DIALOG_ID:
                 
                // set time picker as current time
                return new TimePickerDialog(this, timePickerListener, hour, minute,
                        false);
     
            }
            return null;
        }
     
        private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() {
             
     
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minutes) {
                // TODO Auto-generated method stub
                hour   = hourOfDay;
                minute = minutes;
     
                // set current time into output textview
                output.setText(new StringBuilder().append(utilTime(hour))
                        .append(":").append(utilTime(minute)));
             }
     
        };
     
        private static String utilTime(int value) {
             
            if (value < 10)
                return "0" + String.valueOf(value);
            else
                return String.valueOf(value);
        }


                @Override
                public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                       
                }
    }

L'activity main.xml (ci sono delle cose in più che mi serviranno in futuro):
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:background="#E8E8E8"
    tools:ignore="MissingPrefix,ScrollViewSize" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:background="#E8E8E8"
        tools:ignore="Overdraw" >

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="5dp"
            android:text="Wifi Manager"
            android:textSize ="25sp"
            android:textAppearance="?android:attr/textAppearanceMedium"
            tools:ignore="HardcodedText" />
   
           <Button
               android:id="@+id/btnClick"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_marginLeft="10dp"
               android:layout_marginTop="15dp"
               android:text="Start Wifi"
               tools:ignore="HardcodedText" />
           
            <TextView
                android:id="@+id/output"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:textAppearance="?android:attr/textAppearanceLarge" />
           
            <TextView
                android:id="@+id/mainText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:background="#FFF"
                android:padding="10dp"
                android:text="hello_world"
                tools:ignore="HardcodedText" />
       
           <TextView
              android:id="@+id/dateinfo"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignLeft="@+id/device_memory_status_txt"
              android:layout_below="@+id/time_button"
              android:layout_marginTop="18dp"
              android:layout_marginLeft="18dp"
              tools:ignore="SelectableText,UnknownIdInLayout,ObsoleteLayoutParam" />
       
            <TextView android:id="@+id/addres"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:textSize ="20sp"
              android:text="" />
       
            <TextView
                android:id="@+id/text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/dateinfo"
                android:layout_below="@+id/dateinfo"
                android:layout_marginLeft="10dp"
                android:text="@string/ip_connessione_wifi_"
                tools:ignore="HardcodedText,ObsoleteLayoutParam" />
       
            <TextView
                android:id="@+id/lblTime"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/btnClick"
                android:layout_marginTop="20dp"
                android:layout_marginLeft="15dp"
                android:layout_toRightOf="@+id/output"
                android:textAppearance="?android:attr/textAppearanceLarge"
                tools:ignore="SelectableText,ObsoleteLayoutParam" />
   
        </LinearLayout>
</ScrollView>
Spero di essere stato chiaro e che qualcuno possa aiutarmi. Byee

Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Re:Leggere connessioni wifi da lisview
« Risposta #1 il: 20 Giugno 2013, 22:13:03 CEST »
0
Nessun aiuto?:(

Inviato dal mio Nexus 4