Androidはリアルタイムでネットワークの状態を監視できる
7503 ワード
まず簡単に考えてみましょう.ネットワークが変化すると、システムが放送します.だから私たちはこの放送を傍受して、インタフェースのコールバックを利用してactivityに相応の操作をするように通知すればいいです.
構想ネットワークの状態を判断する(ツールクラスNetUtilを書く) クラス継承BroadcastReceiver(インベントリファイルに登録することを忘れない) を書くインベントリファイルに権限を追加する必要がある コールバックインタフェース(NetEvevt) BaseActivityはこのインタフェース を実現する
ダイレクトコード
みんながDemoを参考にしてダウンロードするためにDemoをしました
構想
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">uses-permission>
ダイレクトコード
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
* Created by Hoban on 2017/11/15.
*/
public class NetUtil {
/**
*
*/
public static final int NETWORK_NONE = -1;
/**
*
*/
public static final int NETWORK_MOBILE = 0;
/**
*
*/
public static final int NETWORK_WIFI = 1;
public static int getNetWorkState(Context context) {
//
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {
return NETWORK_WIFI;
} else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {
return NETWORK_MOBILE;
}
} else {
return NETWORK_NONE;
}
return NETWORK_NONE;
}
}
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
/**
* Created by Hoban on 2017/11/15.
*/
public class NetBroadcastReceiver extends BroadcastReceiver {
public NetEvevt evevt = BaseActivity.evevt;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
int netWorkState = NetUtil.getNetWorkState(context);
//
evevt.onNetChange(netWorkState);
}
}
//
public interface NetEvevt {
public void onNetChange(int netMobile);
}
}
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
/**
* Created by Hoban on 2017/11/15.
*/
public class MainActivity extends BaseActivity {
private TextView textView,txtView;
ListView listView; // ListView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView= (TextView) findViewById(R.id.textView);
txtView=(TextView)this.findViewById(R.id.txtView);
//
boolean netConnect = this.isNetConnect();
if (netConnect){
textView.setVisibility(View.GONE);
txtView.setText(" ");
}else {
textView.setVisibility(View.VISIBLE);
txtView.setText(" ");
}
}
@Override
public void onNetChange(int netMobile) {
super.onNetChange(netMobile);
//
if (netMobile==NetUtil.NETWORK_NONE){
textView.setVisibility(View.VISIBLE);
txtView.setText(" ");
}else {
textView.setVisibility(View.GONE);
txtView.setText(" ");
}
}
}
みんながDemoを参考にしてダウンロードするためにDemoをしました