ネットワークの状態を調べる

このへんか。

NetworkInfoを使って、通信接続が可能状態か知る « Tech Booster 

パーミッション

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

ソース

すこし手を入れながら理解する。

public class MainSample extends Activity implements OnClickListener {
    ConnectivityManager cm;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        Button bt = (Button) findViewById(R.id.checkbutton);
        bt.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
        NetworkInfo nInfo = cm.getActiveNetworkInfo();
        if (nInfo != null && nInfo.isConnected()) {
            appearToast(nInfo.getTypeName() + " Network connected");
        } else {
            appearToast("No Network Connection!");
        }
    }

    private void function appearToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }

}

NetworkInfo | Android Developers 

コードを探す。


how to see if wifi is connected in android - Stack Overflow 

android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if( state != NetworkInfo.DetailedState.CONNECTED ){
    return false;
}
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (mWifi.isConnected()) {
    // Do whatever
}

Wi-Fiの状態は細かく取れる。

SupplicantState supState; 
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
supState = wifiInfo.getSupplicantState();
AUTHENTICATING Network link established, performing authentication.
BLOCKED Access to this network is blocked.
CONNECTED IP traffic should be available.
CONNECTING Currently setting up data connection.
DISCONNECTED IP traffic not available.
DISCONNECTING Currently tearing down data connection.
FAILED Attempt to connect failed.
IDLE Ready to start data connection setup.
OBTAINING_IPADDR Awaiting response from DHCP server in order to assign IP address information.
SCANNING Searching for an available access point.
SUSPENDED IP traffic is suspended

Androidが通信可能かどうか」を取りたいので、

        cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo nInfo = cm.getActiveNetworkInfo();
        if (nInfo != null && nInfo.isConnected()) {
            appearToast(nInfo.getTypeName() + " Network connected");
        } else {

結局ここらか。

ConnectivityManager

このクラスでネットワーク周りを操作。

ConnectivityManager | Android Developers