Android 局域网扫描代码
时间: 2024-09-20 21:17:56 浏览: 68
Android 中,局域网扫描通常通过 `BroadcastReceiver` 和网络 API(如 `Wi-Fi P2P` 或 `Socket`)来实现。以下是一个简单的示例,展示如何使用 Wi-Fi P2P 功能来扫描附近的设备:
```java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.WifiP2pManager.Channel;
// 创建一个 BroadcastReceiver 来监听 Wi-Fi P2P 的变化
public class WiFiPeeringService extends BroadcastReceiver {
private WifiP2pManager mWifiP2pManager;
private Channel mChannel;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WifiP2pManager.NETWORK_CHANGED)) {
// 当 Wi-Fi P2P 状态改变时,获取管理器和频道
mWifiP2pManager = (WifiP2pManager) context.getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mWifiP2pManager.initialize(context, getMainLooper(), null);
// 请求发现服务信息,这将触发扫描附近的设备
try {
mWifiP2pManager.requestListPeers(mChannel, new WifiP2pManager.ListPeersListener() {
@Override
public void peersAvailable(WifiP2pDeviceList peers) {
for (WifiP2pDevice device : peers.getDevices()) {
Log.d("Scanning", "Found peer: " + device.deviceAddress);
}
}
@Override
public void error(int reasonCode) {
// 处理错误情况
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
// 在需要的地方注册并开始监听
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 注册广播接收器
registerReceiver(new WiFiPeeringService(), new IntentFilter(WifiP2pManager.NETWORK_CHANGED_ACTION));
}
}
```
阅读全文