마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

wifi scan 결과를 broadcastreceiver로 받는 문제 입니다.

0 추천

broadcastreceiver를 이용해서 scan결과를 받고

textview 에 뿌려주려고 하는데,

에러는 없고, initwifiscan과 stopwifi 은 textview가 변하는걸 봐서는 잘 작동하

는것 같습니다. 고수분들~  부탁 드립니다.

소스는 http://saoa.tistory.com/49에서 올리신 글을 참고 하였습니다.

package ac.awst.findposition;

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.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Menu extends Activity implements OnClickListener{
    /** Called when the activity is first created. */
 
 Button btnstart;
 TextView state;
 TextView showlist;
 TextView appsub;
 Button btnstop;
// private Button checkButton;
 WifiManager wm;
 List<ScanResult> mScanResults;

 private int foundCount=0;
 
 private BroadcastReceiver mReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
   final String action = intent.getAction();
   if(action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
    //mScanResults = wm.getScanResults();
    getWifiScanResult();
    wm.startScan();
    //mListAdapter.notifyDataSetChanged();
   } else if (action.equals( WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
    sendBroadcast( new Intent( "wifi.ON_NETWORK_STATE_CHANGED"));
   }
  }
 };
 
 public void getWifiScanResult() {
  mScanResults = wm.getScanResults();
  foundCount = mScanResults.size();
  state.setText("scan count is \t" +  ++foundCount + "    \t APs");
  
  showlist.append("===============================\n");
  for ( int i=0 ; i < mScanResults.size() ; i++) {
   ScanResult  result = mScanResults.get(i);
   showlist.append((i+1) + ".SSID : " +result.SSID.toString() + "\t\t RSSI : " +result.level + "dBm\n");   
  }
  showlist.append("===============================\n");
 }
 
 // Wifi scan Start
 public void initWIFIScan() {
  //super.onStart();
  final IntentFilter filter = new IntentFilter( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
  filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
  registerReceiver(mReceiver, filter);
  state.setText("Scanning ... ");
  wm.startScan();
 }
 
 public void StopWIFI() {
  //super.onPause();
  state.setText("stop scanning");
  unregisterReceiver(mReceiver); // unregister Broadcast
 } 
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
       
        btnstart = (Button)findViewById(R.id.startWifi);
        btnstop = (Button)findViewById(R.id.stopWifi);
        state = (TextView)findViewById(R.id.status);
        showlist = (TextView)findViewById(R.id.showlist);
        appsub = (TextView)findViewById(R.id.textView1);
        btnstart.setOnClickListener(this);
        btnstop.setOnClickListener(this);
        
        wm = (WifiManager)Menu.this.getSystemService(WIFI_SERVICE);
       
        if (wm.isWifiEnabled() == false)
         wm.setWifiEnabled(true);
       
        appsub.setText("WIFI Scanner");
    }
   
    @Override
 public void onClick(View v) {
  //wm = (WifiManager)Menu.this.getSystemService(Context.WIFI_SERVICE);
  //wm.setWifiEnabled(true);
  if (v.getId() == R.id.startWifi) {
   initWIFIScan();
  }
  
  if(v.getId() == R.id.stopWifi) {
   StopWIFI(); 
  }
   
 }
}
  
 

 

오드아덴 (190 포인트) 님이 2013년 3월 12일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...