Articles of wifimanager

在Android上的每个WiFi扫描之间应该使用什么间隔?

我需要定期执行Wifi扫描。 时间间隔设置为1-2秒时遇到问题。 看来我没有得到任何ScanResult 。 是否有最低限度的时间设置,以便WifiManager能够执行成功的WiFi扫描? 这是代码。 我正在使用Service进行Wifi扫描: public class WifiScanning extends Service{ private static final String TAG = "WifiScanning"; private Timer timer; public int refreshRate, numberOfWifiScan, wifiScanGranularity; WifiReceiver receiverWifi = new WifiReceiver(); WifiManager wifi; StringBuilder sb; List<ScanResult> wifiList; List<APData> apdataList; List<List<APData>>surveyData; private TimerTask updateTask = new TimerTask() { @Override public void run() { Log.i(TAG, "Timer […]

Android WifiLock WIFI_MODE_SCAN_ONLY无法正常工作

我试图阻止无线连接。 我希望我的应用程序打开wifi,但不连接到已存储在智能手机上的任何networking。 但即使在使用SCAN_ONLY模式之后,他仍然连接到已经“知道”的networking。 ….. wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); ….. wifiManager.setWifiEnabled(true); WifiLock scanOnly = wifiManager.createWifiLock(WifiManager.WIFI_MODE_SCAN_ONLY, "scanOnly"); scanOnly.acquire(); 已经绝望,我试图断开后,确保状态是WIFI_STATE_ENABLED无线。 该应用程序无法连接几秒钟,但一段时间后,它连接到同一个networking… wifiManager.setWifiEnabled(true); …. WHEN (WIFI STATE == WIFI_STATE_ENABLED) {wifiManager.disconnect(); scanOnly.acquire();} 有人能帮我吗? TKS

Android Wi-Fi扫描:从ScanResult过滤打印机

我正在研究一个需要扫描公共Wi-Fi接入点的项目。 目前,我正在像这样筛选ScanResult : for (ScanResult scanResult : wifiList) { if (!(scanResult.capabilities.contains("WEP") || scanResult.capabilities.contains("WPA") || scanResult.capabilities.contains("WPA2"))) { openWifiList.add(scanResult); } } 它工作正常,除了我也得到附近的打印机。 扫描时,手机没有连接到任何networking。 我假定我得到的是与Android上的Wi-Fi设置中显示的Wi-Fi连接列表完全相同的列表。 但是在Wi-Fi设置中没有显示任何打印机。 所以对于1)我认为奇怪的是打印机显示在ScanResult列表中, 是否打印机真的可以这样看 ? 更新:并不是所有的Wi-Fi打印机都可见,我对此有一些提示,而且似乎正在显示的打印机具有特殊的function,例如HP打印机支持HP Wireless Directfunction(请参阅https: /h30434.www3.hp.com/t5/Inkjet-Printing/Printer-SSID-appearing-on-my-wi-fi-list/td-p/1705073和https://support.hp.com/rs-en / document / c04577030 )。 2) 有什么方法可以检查ScanResult是否属于打印机 ? 到目前为止,我只能想到过滤普通的SSID名称,但这不会是非常有效或可靠的。 感谢您的任何build议。

WiFi锁不起作用,如何防止wifi功率节省?

我做了一个应用程序,将手机变成networking摄像头,并使用手机连接将图像发送到互联网networking空间。 我正在使用广告活动,每5或15分钟设置一个“闹钟pipe理器”执行一项服务。 要执行服务的整个执行,我会执行一次唤醒locking,但是当服务完成时会中断。 所有这一切都与移动连接完美的工作,但不与wifi一样。 我已经在无线networking睡眠设置在WiFi选项策略“从不”。 但经过一段时间(并不总是相同的)手机似乎进入省电模式:WiFi图标尚未在状态栏,但手机无法连接。 即使是我使用浏览器…所以我必须断开连接并手动重新连接。 logcat中的消息: notify conn break (IOEx), close connection即使手机插上电源!!! 为什么? (1) 做一个由启动服务的活动组成的另一个应用程序,它总是以一个唤醒锁来运行。 所以我已经添加了wifilocking以确保连接,而且这种方法有时运行,而其他一些不是。 总是一样的notify conn break (IOEx), close connection为什么? (2) 最后一个实验是从第一个应用程序(报警pipe理器)派生出来的,并确保wifi没有进入睡眠/省电模式(一个??)我已经在执行代码后以飞行模式打开电话并在循环开始时closures(连接)。 这项工作可以两天,但有时只是在工作后(每个小时或两个,而不是每个5分钟,或有时不工作一整天,然后重新启动没有任何理由..)。 那么,为什么飞机模式有时不会重新build立起无线连接呢? (还有一些时候呢?)(3) 这款手机是原装2.2版的三星Galaxy ACE,并一直插上充电。

Android M:无法以编程方式删除Wi-Fi AP

Android M上:我使用下面的代码来删除当前连接的AP。 void RemoveConnectedNetwork(){ int ID=_wifiManager.getConnectionInfo().getNetworkId(); Log.d("test", "network id = ["+ID+"]"); boolen ret =_wifiManager.removeNetwork(ID); Log.d("test", "removeNetwork return ="+ret); _wifiManager.saveConfiguration(); } 但removeNetwork总是返回false。 尽pipe此API在以前的版本中运行良好。 任何想法,同样可以使用任何其他API来实现?

如何在使用Java的Android Wi-Fi连接上设置ProxySettings和ProxyProperties?

如何使用Java(编程)在Android Wi-Fi连接上设置ProxySettings和ProxyProperties? 由于ipAssignment,linkProperties,ProxySettings和ProxyProperties是Android 3.1及以上的WifiConfiguration中的隐藏字段,我需要能够枚举类和使用字段。 下面的代码示例使用下面的链接,我可以设置一个特定的Wi-Fi连接的静态IP地址,网关和DNS,但我也需要设置Wificonfiguration.ProxySettings.STATIC和ProxyProperties 请参阅堆栈溢出问题如何以编程方式在Android 3.x或4.x上configuration静态IP地址,networking掩码,网关 。 例如, WifiConfiguration config = new WifiConfiguration(configuration); config.ipAssignment = WifiConfiguration.IpAssignment.UNASSIGNED; config.proxySettings = WifiConfiguration.ProxySettings.STATIC; config.linkProperties.setHttpProxy(new ProxyProperties("127.0.0.1", 3128, "")); 寻找像这样的东西: setProxySettings("STATIC", wifiConf); setProxyProperties("proxyserver.mine.com.au", 8080, ""); // Set Proxy server and port. wifiManager.updateNetwork(wifiConf); //apply the setting 使用下面的代码从coolypf .ipAssignment .ProxySettings和linkProperties被隐藏… WifiManager manager = (WifiManager)getSystemService(Context.WIFI_SERVICE); manager.asyncConnect(this, new Handler()); if (!manager.isWifiEnabled()) return; List<WifiConfiguration> configurationList […]

Android获取热点提供设备的IP地址

我目前正在使用 public static String getLocalIPAddress(WifiManager wm){ return Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress()); } 获取正在执行的设备的IP地址。 如果设备连接到“普通”的无线networking以及设备连接到由其他Android设备通过热点托pipe的WiFinetworking,则工作正常。 如果设备没有连接到任何WiFinetworking,则返回“0.0.0.0”(正确)。 但是如果设备通过提供热点托pipe一个wifinetworking,方法仍然返回“0.0.0.0”。 我怎样才能得到一个热点提供设备的真正的IP地址“在自己的WiFinetworking”? thx&问候

Android以编程方式testingwifi连接

我正在为一个物联网设备编写Android应用程序。 我必须给设备的WiFi用户名和密码,所以我正在使用一个Android应用程序来做到这一点。 我有下面的代码,但它似乎总是连接到networking天气或没有给出正确的密码。 我正在testing这与我的手机连接到相同的AP。 期望的行动是 断开与当前AP的连接 – >尝试使用给定的凭据进行连接 – >重新连接到原始networking。 我需要采取哪些步骤来正确validationWiFinetworking和密码? 代码: WifiConfiguration conf = new WifiConfiguration(); conf.SSID = "\"" + ssid + "\""; for(ScanResult sr: wifiList){ if(sr.SSID.equals(ssid)){ if(sr.capabilities.contains("WEP")){ if(isNumeric(pass)){ conf.wepKeys[0] = pass ; }else{ conf.wepKeys[0] = "\"" + pass + "\""; } conf.wepTxKeyIndex = 0; conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); }else if(sr.capabilities.contains("PSK")){ conf.preSharedKey = "\""+ pass +"\""; […]

为什么WifiConfiguration.BSSID始终为空?

我正在阅读现有的Wi Ficonfiguration。 代码是相当不错的 WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); List<WifiConfiguration> configurations= null; if (wifiMgr != null) { configurations = wifiMgr.getConfiguredNetworks(); } 我有必要的权限: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 问题是,尽pipe在设置中可以看到BSSID(MAC),但所有的(至less在我的情况下)WifiConfiguration中的BSSID都是NULL。 可能是什么问题以及如何解决? 另一个问题 – 在哪里获取设置的Wifi设置(姜饼)的代码,因为它显示BSSID

调用WifiManager startScan时抛出SecurityException

我使用由AlarmManager启动的PendingIntent (带有IntentService )每隔几分钟启动一次wifi扫描(使用IntentService )。 在大多数设备上,在大多数情况下,这是没有问题的。 但是,在多个设备上,我收到以下错误(无法在任何testing设备上重现错误,这是用户设备的崩溃日志): java.lang.RuntimeException: Unable to start service com.myapp.android.service.MyService@44a9701 with Intent { act=com.myapp.android.ACTION_PERFORM_WIFI_SCAN flg=0x4 cmp=com.myapp/com.mayapp.android.service.MyService (has extras) }: java.lang.SecurityException: Permission Denial: broadcast from android asks to run as user -1 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3021) at android.app.ActivityThread.-wrap17(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1443) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at […]