public class MainActivity extends Activity {
WifiManager wifiManager,wifiManager2;
WifiInfo wifiInfo,wifiInfo2;
TextView tv;
int speed;
String action;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.tv);
wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
wifiInfo = wifiManager.getConnectionInfo();
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(wifiReceiver,filter);
}
private BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
if(wifiManager.getWifiState()==3){
hd.post(callback);
hd2.postDelayed(callback2, 10000);
}else{
hd.removeCallbacks(callback);
tv.setText("Wifi가 비활성화 상태입니다.");
}
}
};
Handler hd2 = new Handler();
public Runnable callback2 = new Runnable(){
public void run(){
hd2.postDelayed(this, 5000);
if(speed>0){
hd.removeCallbacks(callback);
hd2.removeCallbacks(callback2);
wifiManager.setWifiEnabled(false);
Toast.makeText(MainActivity.this, "Wifi 연결이 종료되었습니다.", Toast.LENGTH_SHORT).show();
tv.setText("Wifi가 비활성화 상태입니다.");
}
}
};
Handler hd = new Handler();
public Runnable callback = new Runnable(){
@SuppressLint("DefaultLocale") public void run() {
if(wifiManager.getWifiState()==3){
wifiManager2 = (WifiManager)getSystemService(WIFI_SERVICE);
wifiInfo2 = wifiManager2.getConnectionInfo();
@SuppressWarnings("unused")
String id = wifiInfo2.getSSID();
speed = (wifiInfo2.getLinkSpeed());
double aa = speed+0.0;
double aaa = aa/8.0;
String num = String.format("%.2f" , aaa);
@SuppressWarnings("static-access")
double latency = wifiManager2.WIFI_MODE_FULL_HIGH_PERF;
String num2 = String.format("%.2f", latency);
String view = "Wifi Id : "+wifiInfo2.getSSID()+"\n"+"\n"+"Speed : "+num+"MBps" + "\n" +"\n"+ "Power : " +
String.valueOf(wifiInfo2.getRssi()+"dBm"+"\n"+"\n"+"Power : "+num2+"ms");
tv.setText(view);
hd.postDelayed(this, 3000);
}else{
tv.setText("Wifi가 비활성화 상태입니다.");
hd.removeCallbacks(callback);
}
}
};
protected void onDestroy() {
super.onDestroy();
hd.removeCallbacks(callback);
hd2.removeCallbacks(callback2);
}
}
소스코드입니다
이것을 정적 리시버로 변경하려면 어떻게 해야하나요