Androidでネットワークの接続状況を判定する

http://dev.blog.fairway.ne.jp/android%E3%81%A7%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E7%8A%B6%E6%85%8B%E3%82%92%E7%9F%A5%E3%82%8B/
パーミッション

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.myapplication" >

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
package com.test.myapplication;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;


public class MainActivity extends Activity {

    public enum NetworkStatus {
        OFF,
        MOBILE,
        WIFI,
        BLUETOOTH,
        ETHERNET,
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView myTextView = (TextView) findViewById(R.id.myTextView);
        switch(getConnectedState(this)){
            case OFF:
               myTextView.setText("OFF");
                break;
            case MOBILE:
               myTextView.setText("MOBILE");
                break;
            case WIFI:
                myTextView.setText("WIFI");
                break;
            case BLUETOOTH:
                myTextView.setText("BLUETOOTH");
                break;
            case ETHERNET:
                myTextView.setText("ETHERNET");
                break;
        }
    }

    public NetworkStatus getConnectedState(Context context){
        ConnectivityManager cm = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo info = cm.getActiveNetworkInfo();
        NetworkStatus status = NetworkStatus.OFF;
        if(info.isConnected()){
            switch ( info.getType() )
            {
                case ConnectivityManager.TYPE_WIFI: // Wifi
                    status = NetworkStatus.WIFI;
                    break;
                case ConnectivityManager.TYPE_MOBILE_DUN: // Mobile 3G
                case ConnectivityManager.TYPE_MOBILE_HIPRI:
                case ConnectivityManager.TYPE_MOBILE_MMS:
                case ConnectivityManager.TYPE_MOBILE_SUPL:
                case ConnectivityManager.TYPE_MOBILE:
                    status = NetworkStatus.MOBILE;
                    break;
                case ConnectivityManager.TYPE_BLUETOOTH: // Bluetooth
                    status = NetworkStatus.BLUETOOTH;
                    break;
                case ConnectivityManager.TYPE_ETHERNET:  // Ethernet
                    status = NetworkStatus.ETHERNET;
                    break;
            }
        }
        return status;
    }

}