查看附近可连接wifi网络的信号强度(rssi)、热点能力、服务集标识(ssid)等信息,开发者可自定义策略选择网络效果图日志中打印结果显示可参考如图方案 当前暂不支持三方直接调用扫描能力,提供 wifimanager.getScanInfoList 方法获取到扫描结果核心代码try { let scanInfoList = wifiManager.getScanInfoList(); console.info("scanInfoList:" JSON.stringify(error));}场景二:通过当前连接wifi的IP地址判断用户所属有关位置信息方案建立socket通信连接绑定本设备ip地址 / 获取本地WiFi的IP地址及特征,可参考 @ohos.wifimanager.getLinkedInfo ip >>> 24) + '.' + (ip >> 16 & 0xFF) + '.' + (ip >> 8 & 0xFF) + '.' + (ip & 0xFF);} //获取当前连接wifi的IP地址wifiManager.getLinkedInfo
——热点连接结果通知广播 WifiManager.NETWORK_STATE_CHANGED_ACTION ——网络状态变化广播(与上一广播协同完成连接过程通知) 开发细节 1 获取WifiManager 实例 wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); 2 ( WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED case WifiManager.WIFI_STATE_ENABLED: //wifi已打开 break; case WifiManager.WIFI_STATE_ENABLING 连接结果通过两个广播反馈: WifiManager.NETWORK_STATE_CHANGED_ACTION WifiManager.SUPPLICANT_STATE_CHANGED_ACTION 其中
); //WiFi扫描到附近可用WiFi时的广播 mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); mFilter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION ); mFilter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION); mFilter.addAction (WifiManager.NETWORK_STATE_CHANGED_ACTION); mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION.equals(action) || WifiManager.LINK_CONFIGURATION_CHANGED_ACTION.equals
com.daniulive.smartpublisher;import android.content.Context;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager context) { if (null == context) return getIpAddress(); // 获取WiFi服务 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); // 判断WiFi是否开启 if (wifiManager.isWifiEnabled()) { // 已经开启了WiFi WifiInfo wifiInfo = wifiManager.getConnectionInfo
); //当设备网络状态发生改变时会发送该广播 mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); action (action)) { //WiFi状态生改变时去更新switch的状态,WiFi的状态存在于WifiManager.EXTRA_WIFI_STATE handleWifiStateChanged(intent.getIntExtra( WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN (action)) { //连接发生改变时的更新,WifiManager.EXTRA_NEW_STATE存放改变后的状态 if (! ))); } } else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)
android.permission.ACCESS_WIFI_STATE" /> 如图所示: 1.png 二、在activity中添加代码 1、获取WiFi名称 private String getConnectWifiSsid(){ WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo png 以上两种方法任选一种即可,去掉双引号之后,返回的才是真正的WiFi名称,最终写法如下所示: private String getConnectWifiSsid() { WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); // //去掉带引号的字符串方法一 // String wifiInfo1 = wifiInfo.getSSID
最近做从android9.0到11.0的代码移植工作,需要在WifiManager.java中添加接口,添加以后编译报错: frameworks/base/wifi/java/android/net/wifi /WifiManager.java:5703: error: Missing nullability on parameter `cmd` in method `****` [MissingNullability ] frameworks/base/wifi/java/android/net/wifi/WifiManager.java:5711: error: Missing nullability on method `****` return [MissingNullability] frameworks/base/wifi/java/android/net/wifi/WifiManager.java:5711: MissingNullability] 解决办法是需要在frameworks/base/wifi/api/lint-baseline.txt里面添加: MissingNullability: android.net.wifi.WifiManager
在setWifiTethering中,调用了WifiManager的startSoftAp函数。 源码路径: http://androidxref.com/9.0.0_r3/xref/frameworks/base/wifi/java/android/net/wifi/WifiManager.java break; } updateApState(WifiManager.WIFI_AP_STATE_ENABLING , WifiManager.WIFI_AP_STATE_DISABLED, 0); int ; } updateApState(WifiManager.WIFI_AP_STATE_FAILED
–>WifiManager WifiTracker 广播监听到WifiManager.WIFI_STATE_CHANGED_ACTION ,执行updateWifiState,确认WIFi开启以后,执行 开启wifiManager.StartScan final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override , WifiManager.WIFI_STATE_UNKNOWN)); private void updateWifiState(int state ) { if (state == WifiManager.WIFI_STATE_ENABLED) { if (mScanner ! mScanner.resume(); } resume函数会发送MSG_SCAN消息,MSG_SCAN消息的处理结果就是调用wifiManager.StartScan。
--------------------------------- wifi -o sta 以 sta 模式打开 wifimanager ---------------------------------- wifi -o ap [ssid] [passwd] 以 ap 模式打开 wifimanager --------------------------------------------------------- wifi -o monitor 以 monitor 模式打开 wifimanager ------------------- wifi -f 关闭 wifimanager 代码路径 tina/package/allwinner/wireless/wifimanager2.0 Tina配置 Allwinner ----> wifimanager-v2.0
1.得到当前已连接的wifi信息 WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE); WifiInfo wifiInfo : Log.i(Global.TAG, "1111:" + WifiManager.WIFI_STATE_DISABLING); : Log.i(Global.TAG, "2222:" + WifiManager.WIFI_STATE_DISABLED); (Global.TAG, "4444:" + WifiManager.WIFI_STATE_ENABLED); wifi_image.setImageResource : Log.i(Global.TAG, "5555:" + WifiManager.WIFI_STATE_UNKNOWN);
本文档只介绍wifimanager-v2.0 配网部分的功能,其他功能请参考其他文档。 wifimanager-v2.0 支持的配网方式有soundwave(声波)、softap(热点)、以及蓝牙BLE配网。 Tina wifimanager-v2.0 <*> wifimanager-v2.0-demo..................... 2.2 demo 使用说明 1.执行wifi_deamon命令;该命令是启动wifimanager-v2.0的后台进程。 蓝牙配网测试 板子通过串口连接PC 与开发板,系统起来,进入Linux shell; 执行wifi_deamon 命令,启动wifimanager-v2.0 的后台进程。
= (WifiManager) this.getSystemService(Context.WIFI_SERVICE); if (! wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(true); } new Handler (); scanResults = wifiManager.getScanResults(); if (scanResults ! wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); 对象 mWifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE
有需要的话--> <uses-permission android:name="android.permission.WAKE_LOCK" /> 开启WIFI mWifiManager = (WifiManager )) { int message = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1); switch (message) { case WifiManager.WIFI_STATE_DISABLED: , "可用", Toast.LENGTH_SHORT).show(); break; case WifiManager.WIFI_STATE_ENABLING ); //监听网络状态改变 intentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); registerReceiver
总体代码路径可以就是这样: WIfiEnabler->WifiManager->WifiService->WifiServiceImpl->WIfiStateMachinePrime->WIfiStateMachine WifiEnabler开关SwitchToggled中会调用WifiManager.setWifiEnabled方法。 /frameworks/base/wifi/java/android/net/wifi/WifiManager.java public boolean setWifiEnabled(boolean , WifiManager.WIFI_STATE_DISABLED); WifiManager.WIFI_STATE_ENABLING); updateWifiState(WifiManager.WIFI_STATE_DISABLED
wifiManager; /** * 向UI发送消息 * @param info 消息 */ public void sendMsg(String wifiManager) { this.wifiManager = wifiManager; } // 提供一个外部接口,传入要连接的无线网 public void wifiManager.isWifiEnabled()) { bRet = wifiManager.setWifiEnabled(true); } int netID = wifiManager.addNetwork(wifiConfig); boolean enabled = wifiManager.enableNetwork = (WifiManager) getSystemService(Context.WIFI_SERVICE); wac = new WifiConnector(wifiManager)
核心 API 使用 Wi-Fi 信息获取 使用鸿蒙的 @kit.ConnectivityKit 中的 wifiManager: import { wifiManager } from'@kit.ConnectivityKit '; // 获取 Wi-Fi 名称 async getWifiName() { let wifiMessage = await wifiManager.getLinkedInfo().then(data ().ipAddress >>> 24, (wifiManager.getIpInfo().ipAddress >>> 16) & 0xFF, (wifiManager.getIpInfo ().ipAddress >>> 8) & 0xFF, wifiManager.getIpInfo().ipAddress & 0xFF ]; return bytes.map(byte = 平台差异 权限模型:鸿蒙的权限模型与 Android/iOS 有所不同,需要在 module.json5 中声明 API 差异:鸿蒙使用 wifiManager 而非 Android 的 WifiManager
WifiManager.WIFI_STATE_CHANGED_ACTION消息,并实时处理wifi状态的变化。 wifi的消息一共有五种: WifiManager.WIFI_STATE_DISABLED: //wifi不可用 WifiManager.WIFI_STATE_DISABLING://wifi 正在关闭或者断开 WifiManager.WIFI_STATE_ENABLED://wifi可用 WifiManager.WIFI_STATE_ENABLING://wifi正在打开或者连接 WifiManager.WIFI_STATE_UNKNOWN 下面出自Android:通过WifiManager监听Wifi信号强弱 先来了解下Android如何获取wifi的信息: WifiManager wifi_service = (WifiManager 2.WifiSateView中有一个广播接收器,接收WifiManager.WIFI_STATE_CHANGED_ACTION.
三、WIFI开关 在使用Wifi之前,我们首先要打开Wifi,而打开Wifi在不同的版本上方式不同,首先在MainActivity中声明变量 private WifiManager wifiManager ,在onCreate()方法中添加如下代码: wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 通过wifiManager.getWifiState wifiManager.startScan()调用会启动系统扫描,通过系统在扫描结束后,会发出WifiManager.SCAN_RESULTS_AVAILABLE_ACTION的广播,当我们的接收者接收到这个广播的时候 ,通过WifiManager的getScanResults()就能获取到扫描结果的集合了。 = null) { wifiManager.removeNetwork(configured.networkId); wifiManager.saveConfiguration
checkWifiStateImg(Context context,ImageView imageView) { if (isWifiConnect(context)) { WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo mWifiInfo mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo mWifiInfo checkWifiStateNum(Context context){ int data = 0; if (isWifiConnect(context)) { WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo mWifiInfo