Nik*_*lin 12 networking android
当信号强度发生变化时,我会收到通知.我尝试创建以下方法并在onCreate()中调用它:
private void initializeWiFiListener(){
Log.i(TAG, "executing initializeWiFiListener");
String connectivity_context = Context.WIFI_SERVICE;
final WifiManager wifi = (WifiManager)getSystemService(connectivity_context);
if(!wifi.isWifiEnabled()){
if(wifi.getWifiState() != WifiManager.WIFI_STATE_ENABLING){
wifi.setWifiEnabled(true);
}
}
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
WifiInfo info = wifi.getConnectionInfo();
//TODO: implement methods for action handling
}
}, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));
}
Run Code Online (Sandbox Code Playgroud)
如果有人能检查方法是否写得正确,我将不胜感激.我试图运行应用程序,但没有收到任何通知,我不确定是否是因为信号强度在我运行调试的地方可能是不变的,或者是因为缺少某些东西.
谢谢!
lil*_*die 12
首先,确保你<uses-permission>为ACCESS_WIFI_STATE你的清单.
其次,我不确定单个连接的通知,但是为了获得收音机看到的所有内容的通知,您可以开始扫描:
wifi.startScan();
Run Code Online (Sandbox Code Playgroud)
接下来,当我收到成功的结果时,我就用WifiManager.SCAN_RESULTS_AVAILABLE_ACTION了IntentFilter.
然后,在接收器中,我使用getScanResults()来自WifiManager对象,其中还包含信号强度.
为了以这种方式停止它,你只需要打电话unregisterRecever()(所以你要保留它以便参考).我没有测试自己,看看我的扫描代码是否可以修改为只检查当前的连接,但我知道我有很多结果 - Wi-Fi信号经常快速地改变.我想要监控单个连接,您也可以只过滤扫描结果并查找设备当前连接的结果.
希望这会有帮助.
| 归档时间: |
|
| 查看次数: |
26889 次 |
| 最近记录: |