📜  Android 中的边对边功能(1)

📅  最后修改于: 2023-12-03 14:59:16.102000             🧑  作者: Mango

Android 中的边对边功能

在 Android 开发中,边对边功能 (Wi-Fi Direct) 提供了一种快速、安全的设备之间进行直接通信的方式,无需连接到互联网或使用其他通信设备作为中介。本文将介绍边对边功能的原理、实现和使用。

原理

边对边功能基于 IEEE Standard 802.11 Wi-Fi 协议,它可以允许两个设备直接通信,而不需要路由器作为中介。它允许设备在无需 Wi-Fi 热点时建立直接 Wi-Fi 连接,称为“Wi-Fi Direct”。两个支持 Wi-Fi Direct 的设备在彼此接近时可以互相发现,建立连接并传输数据。

实现

为了开始使用边对边功能,在您的应用程序中需要执行以下步骤:

  1. 在 AndroidManifest.xml 文件中声明必要的权限:

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
  2. 在 Activity 中选择适当的操作:

    • 发现并连接其他设备:

      WifiP2pManager wifiManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
      WifiP2pManager.Channel channel = wifiManager.initialize(this, getMainLooper(), null);
      
      wifiManager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
          @Override
          public void onSuccess() {
              // Peer discovery initiated
          }
          
          @Override
          public void onFailure(int reason) {
              // Peer discovery failed
          }
      });
      
    • 创建并监听 Wi-Fi Direct 连接:

      WifiP2pManager wifiManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
      WifiP2pManager.Channel channel = wifiManager.initialize(this, getMainLooper(), null);
      
      wifiManager.createGroup(channel, new WifiP2pManager.ActionListener() {
          @Override
          public void onSuccess() {
              // Group created successfully
          }
          
          @Override
          public void onFailure(int reason) {
              // Group creation failed
          }
      });
      
      WifiP2pManager.ConnectionInfoListener connectionInfoListener = new WifiP2pManager.ConnectionInfoListener() {
          @Override
          public void onConnectionInfoAvailable(WifiP2pInfo wifiP2pInfo) {
              // Connection info is available
          }
      };
      
      wifiManager.requestGroupInfo(channel, new WifiP2pManager.GroupInfoListener() {
          @Override
          public void onGroupInfoAvailable(WifiP2pGroup wifiP2pGroup) {
              if (wifiP2pGroup != null) {
                  wifiManager.requestConnectionInfo(channel, connectionInfoListener);
              }
          }
      });
      
使用

使用边对边功能需要至少两个支持 Wi-Fi Direct 的设备,并且这些设备必须处于彼此附近。

应用程序可通过两种方式使用边对边功能:发现并连接其他设备,或创建并监听 Wi-Fi Direct 连接。 连接成功后,可以使用标准的Socket API在设备之间传输数据。

结论

使用边对边功能,您的应用程序可以提供直接设备对设备的通信,这为用户提供了一个快速,方便和安全的方法来共享数据。 边对边功能网络不需要互联网连接或传统的 Wi-Fi 热点,这使得它成为一种高度灵活的解决方案,适用于需要直接通信的各种情况。