2012-11-02 30 views
2

我想开发一个应用程序,连接一些特定的WiFi接入点,如果它可用。我记录一个以30秒为间隔循环的服务,并查看这些特定的WiFi接入点是否可用。 我担心它会消耗太多资源。我正在考虑一个解决方案,如果有任何可能android wifiManager(或其他实用程序)通知我的服务有关新的wifi接入点可用。它就像新的无线接入点监听器。Android WiFi接入点可用事件

在android中有没有实用工具来实现这个目标?

回答

2

你应该记住,当WiFi无线电打开时,你的android设备会定期扫描WiFi网络。所以你不需要手动检查它们。它将使操作系统的负载加倍。

您可以在您的服务中为SCAN_RESULTS_AVAILABLE_ACTION设置侦听器。它会在设备完成常规扫描过程时通知您。当您收到此广播时,请检查所有接入点以查看您的所需接入点是否可用。但是,您只能在WiFi处于开启状态时才能执行此操作。但更好地保持WiFi打开而不是连续地打开和关闭,尤其是当您以30秒的短时间间隔进行打开和关闭时,这会使电池耗尽更快。

+1

我想问同样的问题,什么是常规时间为了这个扫描?你有什么想法。 顺便谢谢你的明确答案。 – Alper

+2

这取决于各种因素:CPU速度,RAM,活动任务数量,取决于手机之间的电话。您可以检查广播接收器并打印时间。通常它大约15秒(我在LG LU3000双核心上检查过)并且变化很大。 –

1

您可以在网上看到样品。你的应用程序可以做类似http://marakana.com/forums/android/examples/40.html

+0

我已经将这个逻辑应用到了我的应用程序中。如果有新的wifi接入点可用,我需要一个通知程序。 如果你仔细阅读我的问题,我需要一个不同的方法。 – Alper

+0

WiFi扫描结果显示WiFi管理员会收到通知。您可以存储最新的扫描结果,并在新列表到达时进行比较。无需循环或轮询。开销只来自列表比较。看到这里的更多细节:http://stackoverflow.com/questions/4253249/android-get-notified-when-a-new-access-point-is-detected – SomeWittyUsername

+0

好吧,我明白你的观点,似乎是“SCAN_RESULTS_AVAILABLE_ACTION “适用于我的解决方案(这只是我没有改变wifi aps的数量,当我关闭适配器并打开接收器接收输入时)。但我不明白这一部分,android播放这个信号的时间表是什么?这种扫描有没有时间间隔?对此有何评论? – Alper