Android 监听 WiFi 开启服务器
在 Android 开发中,需要经常使用 WiFi 来传输数据,如果我们想要在手机端设置一个 WiFi,让其他设备连接进来进行数据交互,我们需要开启一个服务器来管理这些连接。
本文将介绍如何在 Android 上监听 WiFi 的开启状态,以及如何使用 Android 设备作为服务器来管理连接。
一、监听WiFi的开启状态
在 Android 中,我们可以监听网络状态的变化,通过判断 WiFi 是否连接来获得 WiFi 开启或关闭的状态。具体方法如下:
private BroadcastReceiver networkReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (networkInfo.isConnected()) {
// 当 WiFi 连接成功时执行的操作
// 连接成功可进行后续操作,例如开启服务器
} else {
// 当 WiFi 断开连接时执行的操作
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(networkReceiver, filter);
}
需要注意的是,在 Activity 生命周期结束时需要取消注册广播接收器:
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkReceiver);
}
二、使用 Android 设备作为服务器
在实现 Android 设备作为服务器的时候,我们可以使用 Android 内置的 Socket 类来实现。以下是基于 TCP 协议实现的示例代码。首先需要在 AndroidManifest.xml 文件中添加以下权限:
我们需要在子线程中开启一个服务器监听客户端请求的连接:
public class ServerThread extends Thread {
private ServerSocket serverSocket;
@Override
public void run() {
try {
serverSocket = new ServerSocket(8888); // 这里的