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

이걸 정적 Receiver로 바꾸려면 어떻게 해야하나요

0 추천
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);
 
 
}
 
}
 
 
 
소스코드입니다
 
이것을 정적 리시버로 변경하려면 어떻게 해야하나요
프린치피움 (160 포인트) 님이 2014년 5월 26일 질문

답변 달기

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