当GSM返回“99”时,如何确定信号强度?

4
我们有一个内部的Android应用程序,它是一个现有JME应用程序的迁移。在实际使用中,用户抱怨当信号强度较低时尝试发送数据时,应用程序会耗尽设备电池(这是移动设备的常见行为,而不是我们的直接问题)。需要及时但不立即发送数据,因此我们在发送数据之前检查了信号强度。该检查使用了PhoneStateListener和onSignalStrengthsChanged(SignalStrength signalStrength)回调,这是许多类似SO问题和其他文章推荐的方法。

这在我的手机上很好地运行(运行于Telstra Australia),SignalStrength.getGsmSignalStrength()正常返回0-31的值。然而,在另一个网络(Optus Australia)上运行的手机报告GSM是真实的,但在确定信号强度时返回99(即错误代码)。我认为这仍然是正确的行为,因为GSM是2G数据,应该检查3G UMTS/HSPAUMTS/HSPA是手机上的Elixir应用程序报告的网络,如预期所示。我们还收到了未经确认的报告,即我的网络(Telstra Australia)报告GSM信号强度不足以发送应用程序中的数据,但可以浏览互联网和执行其他数据活动而没有问题。这使我相信检查GSM强度是错误的事情。

我正在对同一网络上的其他安卓手机进行测试(仍在尝试访问某些设备),但无论如何,我们都能够浏览互联网并从我们的应用程序发送(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为真,但始终报告“99”。 - GSM可能是要检查的错误内容,我们需要尝试获取“实际数据传输网络强度”。
1个回答

3

在测试了多个厂商和多个(澳大利亚)运营商的多个手机后,似乎这种行为只出现在三星Galaxy S2上,而之前的版本(Galaxy S)没有出现过。


我这里也遇到了同样的问题,如果您有任何解决方案或变通方法,请与我分享。 - NyanLH
不幸的是,我们找到的唯一解决方案是在应用程序中设置“始终发送”,即使GSM信号不强也会发送数据。 - David O'Meara
我在三星Galaxy Tab 7.7上也遇到了这个问题。您在出现此问题时使用的Android版本是什么?当您升级到Android 4.x时,问题是否偶然消失了?(Galaxy Tab运行在Android 3.x上) - Diederik
根据http://en.wikipedia.org/wiki/Samsung_Galaxy_S_II#Software_and_services,SII在2012年3月从2.x升级到4.x,没有3.x版本。如果4.x版本的信号强度不起作用,那么我想可能是设备不想返回信号强度。 - Diederik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接