【问题标题】:How can i check my android device support wifi direct?如何检查我的 android 设备是否支持 wifi direct?
【发布时间】:2023-04-07 10:12:02
【问题描述】:

我正在使用 android wifi 直接演示应用程序。在我的设备中安装后,我注意到它没有按预期工作。

我很困惑,我的设备是否支持 wifi direct 或 wifi direct 所需的特殊硬件功能?我的设备是本地 walton 品牌和 API 级别 16。阅读 android 文档后,我知道 API 级别 14 中添加的 Wi-Fi Direct 不需要无线接入点。

我的另一个问题是,如果在没有使用 wifi direct 创建 wifi 区域的地方,两个或多个设备相互通信。在总结我的问题时,我需要知道我的设备是否不支持 wifi direct 我如何运行 wifi 演示。提前致谢。

【问题讨论】:

    标签: android wifi android-wifi


    【解决方案1】:

    API 21 以上,您可以直接使用 WifiManager 类中的isP2pSupported ()。 对于较低的 Api,您可以使用 PackageManager 类,

    if(getPackageManager().hasSystemFeature("android.hardware.wifi.direct"))
    
    //Wifi direct available
    

    【讨论】:

      【解决方案2】:

      除了StoneLam's answer,这可能是最强大的,一个更快更脏的方法是继续调用WifiP2pManager.discoverPeers(),就像支持WiFi Direct一样。后者接受ActionListeneronFailure() 回调。传递给onFailure(int reason) 的失败原因可以是P2P_UNSUPPORTED,这将回答您的问题:设备不支持WiFi Direct。

      致电onSuccess() 表示设备确实支持 WiFi Direct。以其他失败原因调用 onFailure() 可能无法确定设备的功能。

      【讨论】:

        【解决方案3】:

        Android 4.0 及更高版本支持 Wi-Fi Direct。但是,某些 4.x 设备不支持 Wi-Fi Direct,因为它是 WiFi 驱动程序

        您可以使用以下代码检查您的设备

        mManager.discoverPeers(mChannel, new ActionListener() {
                  @Override
                  public void onSuccess() {
                        //onSuccess
                  }
                  @Override
                  public void onFailure(int reason) {
                        //onFailure
                  }
        });
        

        如果您的设备支持 Wi-Fi Direct,稍后将调用onSuccess。否则,onFailure 将被调用。

        【讨论】:

        • 真的吗?例如,如果设备支持 WiFi Direct 但 WiFi 已关闭,您当然可以调用 onFailure()。所以这种方法并不能真正回答问题。
        【解决方案4】:

        你应该这样检查,因为有些设备不支持 WiFi direct 但仍然在框架中保留 WifiP2pManager 代码。

        private boolean isWifiDirectSupported(Context ctx) {
            PackageManager pm = ctx.getPackageManager();
            FeatureInfo[] features = pm.getSystemAvailableFeatures();
            for (FeatureInfo info : features) {
                if (info != null && info.name != null && info.name.equalsIgnoreCase("android.hardware.wifi.direct")) {
                    return true;
                }
            }
            return false;
        }
        

        【讨论】:

          【解决方案5】:

          检查是否支持 Wifi P2P:

          • 代码中:如果无法获取系统服务,则不支持

            mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
            
          • 无代码:检查该选项是否在“设置”应用中(在 Wifi 下)

          根据您的第二个问题:是的,通过 wifi 直接连接的设备在没有任何现有 wifi 网络的情况下进行通信。

          【讨论】:

          • 模拟器不应该支持P2P,但是当我检查mManager时它没有为我返回null。
          猜你喜欢
          • 1970-01-01
          • 2017-07-29
          • 2013-02-20
          • 1970-01-01
          • 1970-01-01
          • 2012-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多