와이파이 상태, 네트워크 상태 수신



java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package com.ghj.blog_026;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
    //UI
    TextView txtWifistate;
    TextView txtNetworkstate;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //UI
        txtWifistate = (TextView)findViewById(R.id.txtWifistate);
        txtNetworkstate = (TextView)findViewById(R.id.txtNetworkstate);
 
        //리시버등록
        IntentFilter filter = new IntentFilter();
        filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
        filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        registerReceiver(mReceiver, filter);
    }
 
 
    //와이파이 상태변화 수신
    BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            switch(intent.getAction()){
                //와이파이 상태변화
                case WifiManager.WIFI_STATE_CHANGED_ACTION:
                    //와이파이 상태값 가져오기
                    int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
                    switch(wifistate){
                        case WifiManager.WIFI_STATE_DISABLING: //와이파이 비활성화중
                            txtWifistate.setText("와이파이 비활성화중");
                            break;
                        case WifiManager.WIFI_STATE_DISABLED:  //와이파이 비활성화
                            txtWifistate.setText("와이파이 비활성화");
                            break;
                        case WifiManager.WIFI_STATE_ENABLING:  //와이파이 활성화중
                            txtWifistate.setText("와이파이 활성화중");
                            break;
                        case WifiManager.WIFI_STATE_ENABLED:   //와이파이 활성화
                            txtWifistate.setText("와이파이 활성화");
                            break;
                        default:
                            txtWifistate.setText("알수없음");
                            break;
                    }
                    break;
 
                //네트워크 상태변화
                case WifiManager.NETWORK_STATE_CHANGED_ACTION:
                    NetworkInfo info = (NetworkInfo)intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
                    //네트워크 상태값 가져오기
                    NetworkInfo.DetailedState state = info.getDetailedState();
 
                    String typename = info.getTypeName();
                    if(state==NetworkInfo.DetailedState.CONNECTED){ //네트워크 연결
                        txtNetworkstate.setText(typename + " 네트워크 연결");
                    }
                    else if(state==NetworkInfo.DetailedState.DISCONNECTED){ //네트워크 끊음
                        txtNetworkstate.setText(typename + " 네트워크 끊음");
                    }
                    break;
            }
        }
    };
 
 
    //리시버 해제
 
    @Override
    protected void onDestroy() {
        unregisterReceiver(mReceiver);
        super.onDestroy();
    }
}
 
cs



xml)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:id="@+id/txtWifistate"
        android:textSize="24dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
 
    <TextView
        android:id="@+id/txtNetworkstate"
        android:textSize="24dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
 
cs



결과

핸드폰의 와이파이도 켜져있고 와이파이 네트워크 상태도 연결된 경우

 

핸드폰의 와이파이는 켜져있으나 와이파이의 네트워크 상태가 끊긴 경우


+ Recent posts