2011-08-06 2 views
1

Voici mon code:Wifi Code de numérisation

package hu.wifx.droid; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.TextView; 
import android.view.View; 
import java.util.List; 
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.WifiManager; 

public class WifXActivity extends Activity { 

     TextView mText; 
     WifiManager mWifi; 
     List<ScanResult> wifiList; 
     StringBuilder _sb = new StringBuilder(); 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button btn1 = (Button) findViewById(R.id.btn1); 
     btn1.setOnClickListener(new View.OnClickListener() 
     { 
         public void onClick(View arg0) 
         { 
           // TODO Auto-generated method stub 
           StartTester(); 
         } 
     }); 
    } 

    public void StartTester() 
    { 
       IntentFilter i = new IntentFilter(); 
       i.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 

       mText = (TextView) findViewById(R.id.mainText); 
       mWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
       registerReceiver(new BroadcastReceiver(){ 
         public void onReceive(Context c, Intent i) { 
           WifiManager w = (WifiManager)c.getSystemService(Context.WIFI_SERVICE); 
           wifiList = w.getScanResults(); 

           _sb = new StringBuilder(); 

           for(int m = 0; m < wifiList.size(); m++) 
           { 
             _sb.append((wifiList.get(m)).toString()); 
             _sb.append("\\n"); 
           } 

           mText.setText(_sb); 
         } 
       }, i); 

       WifiManager WM = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
       WM.setWifiEnabled(true); 
       WM.startScan(); 
     } 
    } 

Aucune erreur, mais quand je commence l'émulateur et cliquez sur button1: L'application a arrêté de façon inattendue. Pourquoi?

+0

votre chat de publier journal –

Répondre

3

S'il vous plaît vérifier que vous avez ajouté ces autorisations dans le manifeste:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 
+2

L'éditeur de Markdown avalait votre XML. Je l'ai réparé en indentant 4 espaces. –

0

Essayez ceci:

import java.util.ArrayList; 
import java.util.HashMap;  
import java.util.List;  
import android.app.Activity; 
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.WifiConfiguration; 
import android.net.wifi.WifiManager;  
import android.os.Bundle;  
import android.util.Log; 
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.AdapterView;  
import android.widget.Button;  
import android.widget.ListView;  
import android.widget.SimpleAdapter;  
import android.widget.TextView;  
import android.widget.Toast; 

public class WiFiDemo extends Activity implements OnClickListener 
{  
    WifiManager wifi;  
    ListView lv; 
    TextView textStatus; 
    Button buttonScan; 
    int size = 0; 
    List<ScanResult> results; 

    String ITEM_KEY = "key"; 
    ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>(); 
    SimpleAdapter adapter; 

    /* Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     textStatus = (TextView) findViewById(R.id.textStatus); 
     buttonScan = (Button) findViewById(R.id.buttonScan); 
     buttonScan.setOnClickListener(this); 
     lv = (ListView)findViewById(R.id.list); 

     wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     if (wifi.isWifiEnabled() == false) 
     { 
      Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show(); 
      wifi.setWifiEnabled(true); 
     } 
     this.adapter = new SimpleAdapter(WiFiDemo.this, arraylist, R.layout.row, new String[] { ITEM_KEY }, new int[] { R.id.list_value }); 
     lv.setAdapter(this.adapter); 

     registerReceiver(new BroadcastReceiver() 
     { 
      @Override 
      public void onReceive(Context c, Intent intent) 
      { 
       results = wifi.getScanResults(); 
       size = results.size(); 
      } 
     }, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));      
    } 

    public void onClick(View view) 
    { 
     arraylist.clear();   
     wifi.startScan(); 

     Toast.makeText(this, "Scanning...." + size, Toast.LENGTH_SHORT).show(); 
     try 
     { 
      size = size - 1; 
      while (size >= 0) 
      { 
       HashMap<String, String> item = new HashMap<String, String>();      
       item.put(ITEM_KEY, results.get(size).SSID + " " + results.get(size).capabilities); 

       arraylist.add(item); 
       size--; 
       adapter.notifyDataSetChanged();     
      } 
     } 
     catch (Exception e) 
     { }   
    }  
} 
+2

Pouvez-vous expliquer ce qui est différent à ce sujet, et pourquoi c'est mieux? – zck

Questions connexes