Android2.2中WifiManager.calculateSignalLevel函数的BUG
来源:互联网 发布:名爵和荣威的关系知乎 编辑:程序博客网 时间:2024/05/11 04:15
android.net.wifi.WifiManager.calculateSignalLevel(int rssi, int numLevels) 当传递的numLevels的值大于等于46的时候,会出现除数为0的错误。
该函数在Android2.2 sdk中的实现如下
public static int calculateSignalLevel(int rssi, int numLevels) { if (rssi <= MIN_RSSI) { return 0; } else if (rssi >= MAX_RSSI) { return numLevels - 1; } else { int partitionSize = (MAX_RSSI - MIN_RSSI) / (numLevels - 1);//当numLevels > 46时,partitionSize = (-55 - -100) / (46 - 1) = 0 return (rssi - MIN_RSSI) / partitionSize;//错误:除数为0 } }
可以自己实现该函数从而避免这一BUG:
public static int calculateSignalLevel(int rssi, int numLevels){ int MIN_RSSI = -100; int MAX_RSSI = -55; int levels = 101; if (rssi <= MIN_RSSI) { return 0; } else if (rssi >= MAX_RSSI) { return levels - 1; } else { float inputRange = (MAX_RSSI - MIN_RSSI); float outputRange = (levels - 1); return (int)((float)(rssi - MIN_RSSI) * outputRange / inputRange); } }
参考:
http://code.google.com/p/android/issues/detail?id=2555
http://stackoverflow.com/questions/2873469/issue-with-wifimanager-calculatesignallevelrssi-5
- Android2.2中WifiManager.calculateSignalLevel函数的BUG
- Android2.2源代码中关于生成图片缩略图的一个bug
- Android中WiFi的使用------WiFimanager
- Android2.2 Socket关闭Bug的解决方…
- android2.2 与 android2.3的区别
- wifiManager的使用
- 手游开发知识(一)--VBO在Android2.2的bug
- WifiManager
- Android2.2的移植
- Android2.2中添加的match_parent和fill_parent没有区别
- Android2.2中关闭所有界面,彻底退出的方法
- 在android2.2 中完全关闭程序的方法
- android2.2中EditText不可编辑的问题
- 详解 android2.2中全新的 JIT内核编译器
- [MINA]android2.2中使用mina注意的问题
- android2.2中使用mina注意的问题
- Android2.2的camera应用程序中支持双camera切换
- Android2.3读网络数据时候的bug
- JAVA NIO总结(一)—基本概念
- 在手机启动时自动启动 Android 程序
- Anthem.net控件的使用
- 可任意自定义的UITableViewCell
- 黑马程序员——for循环详细解析
- Android2.2中WifiManager.calculateSignalLevel函数的BUG
- 使用SQL语句从数据库一个表中随机获取数据
- 百万级访问网站前期的技术准备
- sql server系统表详细说明
- Tab Control控件的详细使用
- 2012.8.23
- 优秀CIO应注重企业机构整合
- Linux嵌入式工程师成长经历
- 学习UCGUI的苦闷!!