在Android中请求GSM / UMTS位置更新

时间:2013-01-09 10:02:06

标签: android telecommunication umts

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

我有一台配备Android 2.3.3的SonyEricsson X10i手机。我意识到有时我的手机即使表示完全覆盖也没有接听电话。我在MSC / VLR检查了自己,它表明我注册了,我的手机当前处于活动状态(并且没有IMSI DETACH标志),所以它应该正常工作(只有最后一个激活日期有点旧〜几个小时,这也可能是好的,没有短信/电话/位置更新),正如我之前提到的那样,手机显示完全覆盖,似乎它在网络上。但是当我试着打电话时,我只到达了语音邮件。 在MSC / VLR中,我看到呼叫没有寻呼响应原因,但电话什么也没做。我试过其他SW版本(4.0.3 ICS),但结果相同。但我没有注意到使用不同手机(相同类型)的类似行为。 对不起,总结一下。

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

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

1 个答案:

答案 0 :(得分:0)

我也多次看到这个问题(来自同一制造商的2部手机)。根据您的问题,我了解您要强制手机发送MM定期位置更新(无论如何应该发送)。

这个级别太低了,你无处可以在编程界面中直接强制执行此操作。移动性管理过程是电话栈的一部分,并且在3GPP TS 24.008中详细说明,可从www.3gpp.org获得。第4.2.2段定义了电话何时发送这些位置更新。

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