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();
}
}
}