当GSM返回'99'时如何确定信号强度?

时间:2011-09-13 02:21:32

标签: android gsm

我们有一个内部Android应用程序,它是一个预先存在的JME应用程序的迁移。有一个问题是,当信号强度很低时(这是移动设备中的常见行为,而不是我们当前的问题),该领域的用户抱怨应用程序在尝试发送数据时耗尽了设备电池。

数据需要及时发送,但不能立即发送,因此我们在发送数据之前检查信号强度。此检查使用了PhoneStateListeneronSignalStrengthsChanged(SignalStrength signalStrength)回调,这是其他地方许多类似的SO问题和文章所推荐的。

这在我自己的手机上运行(在Telstra Australia上运行)和SignalStrength。getGsmSignalStrength()按预期从0-31返回一个值。然而,在另一个网络(Optus Australia)上运行的电话上,它报告GSM为真,但在确定信号强度时返回99(即错误代码)。我认为这仍然是正确的行为,因为GSM是2G数据,应该检查3G UMTS / HSPAUMTS / HSPA是手机上Elixir应用报告的网络,正如预期的那样。我们还有未经证实的报道称我的网络(Telstra Australia)报告GSM应用程序的数据不足以从应用程序发送数据,但能够浏览互联网并执行其他数据活动而不会出现问题。这让我相信无论如何都要检查GSM强度是错误的。

我正在同一网络上的其他Android手机上运行测试(仍尝试访问某些设备),但我们能够浏览互联网并从我们的应用程序发送(HTTP)数据如果我们检查信号强度并且总是接收'99',它就会失败。在Optus上,SignalStrength.toString()在针对多个塔进行了几天的测试后总是返回99 -1 -1 -1 -1 -1 -1 gsm 3

最接近(未答复)的SO线程是这一个:Getting Signal Strength RSCP and Ec/Io from a phone served by a HSPA network

总结:

  • Telstra连接报告GSM为真并返回可用信号强度
  • Optus连接报告GSM为true但始终报告'99'
  • GSM可能是错误的检查方式,我们需要尝试获取'实际数据传输网络强度'

1 个答案:

答案 0 :(得分:3)

在使用来自多个供应商和多个(澳大利亚)运营商的多个手机进行测试后,似乎这种行为特定于三星Galaxy S2,并且在之前的版本(Galaxy S)中没有出现。