【问题标题】:Android: Why are methods for getting neighboring cell signal strengths better than those for current cell signal strength?Android:为什么获取相邻小区信号强度的方法比获取当前小区信号强度的方法更好?
【发布时间】:2011-01-01 23:07:57
【问题描述】:

我正在编写一个收集细胞信号强度的安卓应用程序。我无法获取“当前”小区信号强度,但获取“相邻”小区信号强度没有任何问题。

为了获取当前小区信号强度,我创建了一个 PhoneStateListener 并实现了 onSignalStrengthChanged 回调。它有效,但不是很好。似乎信号强度几乎没有变化,分辨率只跳到几个数字。我会接受信号强度硬件的分辨率很粗糙的答案,但是当我使用 TelephonyManager 的 getNeighboringCellInfo() 方法时,它的效果要好得多。来自相邻小区的信号强度读数经常变化,并且它们具有更好的分辨率。

那么,如何以与获取相邻小区强度相同的方式获取当前小区信号强度?对我来说,相邻单元格的功能比当前单元格更好,这似乎很奇怪。我在这里遗漏了什么吗?

如果可能的话,我还想直接从电话管理器调用一个方法来获取当前的细胞强度,而不是监听器。如果有人知道怎么做,请告诉我。谢谢。

【问题讨论】:

    标签: android rssi


    【解决方案1】:

    基于 Android 1.5 源 (BatteryStatsImpl.java) 仅当信号在以下状态之间发生变化时才会发送通知:

    SIGNAL_STRENGTH_NONE_OR_UNKNOWN (99)
    SIGNAL_STRENGTH_GREAT (16-32)
    SIGNAL_STRENGTH_GOOD (8-15)
    SIGNAL_STRENGTH_MODERATE (4-7)
    SIGNAL_STRENGTH_POOR (0-3)
    

    因此,在您的情况下,信号强度会在同一范围内变化,并且您不会收到通知。

    我想这样做是为了节省电池寿命。

    【讨论】:

      【解决方案2】:

      我认为这种方法效果不佳,因为正如 javadoc 中所写,onSignalStrengthChanged() 自 api 2.0 起已被弃用,取而代之的是 onSignalStrengthsChanged()(注意“s”),但不幸的是,这种方法是私有的!

      有一个open issue 与此有关,似乎 google 已出于未知原因删除了该方法(可能是因为它没有像您注意到的那样运行良好),它将在下一个 sdk 版本中提供。

      您只需要耐心等待并投票here 以加快开发进程!

      【讨论】:

        猜你喜欢
        • 2013-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-30
        • 2015-12-02
        • 2014-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多