1

让我总结一下我的问题以及我想要实现的目标。

我有一部搭载 Android 2.3.3 的索尼爱立信 X10i 手机。我意识到有时我的手机没有接听电话,即使它表明完全覆盖。我在 MSC/VLR 中检查了自己,它表明我已注册并且我的手机当前处于活动状态(并且也没有 IMSI DETACH 标志),所以它应该可以正常工作(只有最后一个激活日期有点旧~几小时,这也可以很好,没有短信/呼叫/位置更新),正如我之前提到的,手机表示完全覆盖,而且它似乎在网络上。但是当我试图打电话给它时,我只到达了语音信箱。在 MSC/VLR 中,我看到呼叫没有寻呼响应原因,但电话什么也没做。我尝试使用其他软件版本(4.0.3 ICS),但结果相同。但我没有注意到不同手机(相同类型)的类似行为。抱歉,总结太长了。

所以因为我上面描述的,我正在尝试编写一个应用程序/服务,它将在 15-20 分钟内执行 GSM/UMTS 位置更新,但我在 中找不到任何类型的程序android.telephony.gsm.GsmCellLocationandroid.telephony.TelephonyManager这将为我做这件事。
我的另一个担忧是 getState()/setStateOutOfService()/ setState()来自 ServiceState 类的程序……它们似乎并没有真正起作用。例如,当我第一次调用getState()时,我总是会返回STATE_OUT_OF_SERVICE,这是不正确的……当我将状态设置为STATE_POWER_OFForSTATE_IN_SERVICE时,至少我getState()之后会返回该状态,但手机对此无能为力。(甚至没有表示超出范围等……)

欢迎提出任何建议/意见。

4

1 回答 1

0

我也多次看到这个问题(与您的制造商相同的两部手机)。根据您的问题,我了解到您想强制手机发送 MM 定期位置更新(无论如何它都应该发送)。

这太低级了,您无法直接在编程界面中强制执行此操作。移动性管理程序是电话堆栈的一部分,在 3GPP TS 24.008 中有详细规定,可从 www.3gpp.org 获得。第 4.2.2 段定义了手机应该何时发送这些位置更新。

唯一的另一件事是尝试通过间接方式强制手机进入发送位置更新的状态。您可以通过尝试手动选择另一个网络来做到这一点。如果成功,然后您手动重新选择您的家庭网络,那么您将触发位置更新。如果它被拒绝并回退到其家庭网络,那么我认为也会触发位置更新。但这也会产生很小的成本——在进行网络扫描时使用电池,在扫描和进行手动网络选择时会浪费时间。(我个人的经验是,丢失的电话发生的频率不足以证明这一点。)

于 2013-01-10T10:30:48.010 回答