Articles of wifi

获得WIFI和移动数据的信号强度

在我的应用程序中,我需要检查WiFi和移动数据的连接速度,然后比较它,然后切换到哪个网络具有最高的速度。 那么如何才能获得wifi和移动数据的速度或最佳信号强度? 如何以编程方式关闭一个和另一个。 请帮帮我。 样本会有所帮助。

如何在Wi-Fi Direct系列中不再提供对等设备时收到通知?

我正在开发基于使用Wifi Direct API的Android应用程序。 我在我的Activity注册了一个BroadcastReceiver ,以便收到有关以下Wifi Direct事件的通知: WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION 我相信对等列表中的任何更改(包含或排除Wifi Direct范围内的对等方)都可能触发BroadcastReceiver 。 在我的应用程序中,当find新的对等体时,其名称正确地包含在ListView ,但如果对等体离开无线范围(或者如果我关闭其Wi-Fi接口),则不调用BroadcastReceiver (更具体地说,该 WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION 事件未被触发),对等名称仍保留在ListView 。 我想知道是否有任何方式来处理这个问题,因为对等名称包含在ListView ,但从未排除。 我已经考虑重新初始化Channel和WifiP2pManager实例,但我相信这会断开所有对等体。

如何获得Wifi接入点的连接强度?

我正在构建一个应用程序,读取每个可用的Wifi接入点的信号强度。 我编写的代码如下: wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); // Get WiFi status WifiInfo info = wifi.getConnectionInfo(); textStatus.append(“\n\nWiFi Status: ” + info.toString()); // List available networks List configs = wifi.getConfiguredNetworks(); 但是,我有两个问题: 在调试中, configs仅包含一个连接。 但是,我可以看到系统的wifi设置中有几个可用的AP。 即configs是一个不完整的列表。 我不知道如何在WifiConfiguration获得信号强度。 顺便说一下,我正在使用HTC Hero和Android 1.5。

如何确定wifi ap / network使用的wifi频道号码?

我发现有几个Android wifi应用程序(WiFi管理器,WiFi分析器)显示除了BSSID / SSID等之外的WiFi网络的频道号。但我找不到任何关于他们如何做的信息。 我唯一知道的是我可以获得一些wifi频率。 也许他们确定了与该频率相对应的频道? 有没有办法在android中检测wifi网络的频道? 当然这个信息并不是什么大问题,我可以没有它:)但我仍然很好奇……

三十分钟后Wifi-Direct始终断开连接

我正在使用WifiP2pManager.connect()创建一个WifiP2pGroup 。 这样可以正常工作,但无论是否传输数据,该组在30分钟后总是解散。 有谁知道为什么会发生这种情况,或者是否可以预防? 我已经尝试在设备之间连续发送数据并使用唤醒锁保持屏幕整个时间,但它没有任何区别。 我已经确定wifi设置为不睡觉,并且还获得了一个wifilock,并关闭了应用程序和wifi直接的电池优化,但这些也无济于事。 三十分钟后(或具体而言,29米18秒 – 它非常一致)我收到CONNECTION_STATE_CHANGE广播,设备不再配对。 这些设备是运行Android 7 (LineageOS)的Nexus 7和运行Android 6的Samsung Galaxy A5 。 谢谢! 编辑:我已经尝试关闭移动数据并且未连接wifi。 该应用程序没有被暂停或销毁,没有其他应用程序有权更改wifi状态。 在其中一台设备上的wifi日志中,我发现此事件在断开连接时: E/DhcpStateMachine: DHCP renew failed on p2p-wlan0-0: Timed out waiting for DHCP Renew to finish D/WifiP2pService: GroupCreatedState{ what=196613 } E/WifiP2pService: DHCP failed 在另一台设备上,我发现这是在断开连接过程的开始: 552-813/system_process V/WifiHAL: event received NL80211_CMD_DEL_STATION 552-846/system_process D/WifiMonitor: Event [IFNAME=p2p-p2p0-11 AP-STA-DISCONNECTED b6:22:8b:b1:df:0f p2p_dev_addr=f2:62:6f:d1:5f:0c] […]

强制Android在局域网wifi上使用3G而无需网络访问

我有一个无线局域网设置,没有互联网接入。 只是连接到它的各种其他本地WiFi设备。 DHCP配置为不返回网关或DNS服务器。 只有IP和网络掩码。 当我将我的机器人连接到这个无线网络AP它连接正常,但手机上的所有互联网连接都停止工作。 我希望由于wifi没有网关设置,android应该意识到互联网无法通过该连接,而应该通过3G连接进行路由。 我已经尝试在Android手机上设置静态IP,但这没有帮助。 这种设置的主要原因是Android设备可以将这个远程网络上的数据传输到基于互联网的服务器,因为它可以毫无问题地连接到本地设备。 然而,一旦设置了wifi,3G侧就会被打破。 关于如何解决这个问题的任何想法?

将WiFi设置共享为WPA2 Enterprise的QR码

我find了几个描述字符串格式的源代码,用于描述以下forms的WiFi访问设置: WIFI:T:WPA;S:mynetwork;P:mypass;; (例子来自zxing文档 ) 对于基本的WPA-Connections,使用Zxing-Barcode-Scanner-App在我的Android设备上运行正常。 但是,我一直无法find将WPA2 / EAP-Connection设置(也称为WPA2 Enterprise)嵌入到可扫描的2D代码中的方法。 正如我所料,在随机位置插入“L”(登录),“N”(名称)或“I”(识别)参数并没有真正带来任何进步。 有没有人在这里成功地将WiFi连接设置“嵌入”到2D可扫描代码中以与Android设备一起使用? 谢谢你的帮助!

使用Android中的application / vnd.wfa.wsc创建NDEF WiFi记录

从Android 5.0.0开始,您可以长时间点击WiFi连接并将该连接写入标签(“写入NFC标签”)。 您可以在此处find该操作的源: WriteWifiConfigToNfcDialog.java 。 采用WiFi连接并创建NDEF有效负载的相关线路似乎在此处: String wpsNfcConfigurationToken = mWifiManager.getWpsNfcConfigurationToken(mAccessPoint.networkId); mWifiManager是mWifiManager的一个实例,但是getWpsNfcConfigurationToken不是API的一部分。 通过跟踪此方法,我们可以在此处find它的提交: 添加对NFC WSC令牌创建的调用,遗憾的是没有帮助。 这是我的调查已经用完的地方。 编辑:我发现了以下调用堆栈: WifiServiceImpl.java调用mWifiStateMachine.syncGetWpsNfcConfigurationToken(netId); WifiStateMachine.java调用mWifiNative.getNfcWpsConfigurationToken(netId); WifiNative.java终于有了这个方法 public String getNfcWpsConfigurationToken(int netId) { return doStringCommand(“WPS_NFC_CONFIG_TOKEN WPS ” + netId); } 然后调用 String result = doStringCommandNative(mInterfacePrefix + command); doStringCommandNative进行系统调用的地方(无法在任何地方find此代码)。 现在调查结束的地方。 希望有人可以介入并向我展示一个方法,该方法创建一个types为application/vnd.wfa.wsc给定SSID,密码,加密/validationtypes。 我当然检查了由Android创建的实际application/vnd.wfa.wsc记录的字节,但手动重新创建这个过程的字节似乎可能非常不可靠并且非常繁琐。

Android:强制数据通过无线电与WiFi发送

是否有可能强制Android应用程序仅使用移动无线电连接(3g / 4g /等),不允许使用WiFi? 我想我想使用HIPRI连接:(例如:打开WIFI,使用HIPRI 3G): http ://groups.google.com/group/android-developers/browse_thread/thread/d41f85505484d29b

通过访问android中的wifi安全例外

请参阅以下代码 wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (wifi.isWifiEnabled() == false) { Toast.makeText(getApplicationContext(), “wifi is disabled..making it enabled”, Toast.LENGTH_LONG).show(); wifi.setWifiEnabled(true); } 虽然我已将清单文件中的权限添加为 但它仍然给出以下错误 11-23 15:18:24.399: E/AndroidRuntime(6800): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.wifi/com.test.wifi.WifiDemoActivity}: java.lang.SecurityException: WifiService: Neither user 10082 nor current process has android.permission.ACCESS_WIFI_STATE. 请帮忙解释为什么会这样