2012-08-10 3 views
1

사용 가능한 Wi-Fi 장치 목록을 표시하려고합니다. 이것은 내 코드이며, 여기에 어떤 실수가 있는지 이해하지 못합니까? 사용 가능한 Wi-Fi 장치 목록

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); 
    } 
String[] str1 = null; 
ArrayAdapter<String>adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1,str1); 
lv.setAdapter(adapter); 
WifiInfo info = wifi.getConnectionInfo(); 
textStatus.append("\n\nWiFi Status: " + info.toString()); 
boolean b=wifi.isWifiEnabled(); 
if(b){ 
wifi.setWifiEnabled(false); 
Toast.makeText(getApplicationContext(), "Yes", Toast.LENGTH_SHORT).show(); 
enter code here 

이 내가 와이파이 프로그래밍에 의해 특별히 안드로이드 장치 속성을 사용할 수 싶어, 내 코드입니다. 내가 어떻게 얻을 수 있니? 아무도 나 좀 도와 줄래?

public void onReceive(Context c, Intent intent) 
     { 
results = wifi.getScanResults(); 
size = results.size(); 
int i = 0; 
str1 = new String[size]; 
for (ScanResult result : results){ 
str1[i] = result.SSID + " " + result.level; 
i++; 
    } 

답변

5

당신은 mScanResultsresults.SSID를 사용하여 SSID를 받고 이상 그런

List<ScanResult> mScanResults = mWifiManager.getScanResults(); 

반복하는 의해 가능한 WIFI 검색 결과를 얻을 수 있습니다. 또한 최상의 네트워크를 얻으려면 두 네트워크를 비교하는 데 WifiManager.compareSignalLevel(int rssiA, int rssiB)을 사용할 수 있습니다.

ScanResult bestResult = null; 
for(ScanResult results : mScanResults){ 
    Log.d("result",results.SSID); 
    if(bestResult == null || WifiManager.compareSignalLevel(bestResult.level, 
                 results.level) < 0){ 
     bestResult = results; 
    } 
} 
String message = String.format("%s networks found. %s is the strongest.", 
              mScanResults.size(), bestResult.SSID); 
Log.d("best network",message); 

repository에서 완전한 데모를 다운로드 할 수 있습니다.

+0

String Array에 넣고 listview를 사용하여 어댑터를 설정하고 싶습니다. –

+0

여기에 SSID를 어떻게 사용해야합니까?하지만 (ScanResult result : results) {str1 [i] = result.SSID + ""+ result.level; i ++; } –

1

이 코드를 사용해보십시오.

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) 
     { }   
    }  
} 
+0

토스트를 사용하지 않으면 배열 어댑터를 사용하여 목록보기에 Wi-Fi 장치의 모든 목록을 표시해야합니다. 내가 얼마나 그렇게 생각하니? 나는이 안드로이드에 매우 익숙하다. 나는 초보자이다. 그리고 내가 틀렸다면 미안해! 이 예제에서 –

+0

은 listview에서 사용 가능한 모든 WiFi를 나열합니다. main.xml 파일에서 textview, button 및 listview를 하나 취하여 예제와 같이 id를 지정하십시오. –

+0

네, 도와 주셔서 감사합니다. –

관련 문제