2013-01-09 63 views
1

讓我總結一下我的問題以及我想實現的目標。Android的請求GSM/UMTS位置更新

我有一個Android 2.3.3的索尼愛立信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()那個狀態事後,但電話沒有爲此做任何事。 (甚至不包括覆蓋範圍內,等等......)

歡迎每一個建議/評論。

+0

它聽起來像一個有趣的問題,但你做了一堆不同的評論,我不能完全理解你想要什麼知道。據我瞭解,你想要根據手機塔臺三角定位手機的位置(緯度,經度),是嗎?如果是這樣,您必須通過LOCATION_PROVIDER進行操作並請求NETWORK_PROVIDER。如果這不是你要求的,我建議你澄清一下你的問題。 – Budius

+0

您好,基本上,我想強制我的手機執行新的位置更新到無線電/核心。這與緯度,經度無關)是純粹的GSM/UMTS移動管理信令。 [鏈接](http://en.wikipedia.org/wiki/Mobility_management)。我希望澄清一下,如果不是,請讓我知道。 – zmiricz

+0

我想現在更清楚了,但不幸的是我無法提供幫助。祝你好運。 – Budius

回答

0

我也多次看到這個問題(2個來自同一製造商的手機)。從你的問題,我知道你想強制手機發送一個MM定期位置更新(它應該發送)。

這個級別太低,無法在編程界面直接強制執行此操作。移動性管理程序是電話棧的一部分,在3GPP TS 24.008中有詳細說明,可從www.3gpp.org獲得。段落4.2.2定義了電話應該發送這些位置更新的時間。

唯一的其他事情就是嘗試通過間接方式強制手機進入發送位置更新的狀態。您可以通過嘗試手動選擇另一個網絡來完成此操作。如果成功,然後您手動重新選擇您的家庭網絡,那麼您將觸發位置更新。如果它被拒絕並回退到其家庭網絡,那麼我認爲也會觸發位置更新。 但是,這也會有很小的成本 - 電池使用時,它會進行網絡掃描,並且在掃描和手動選擇網絡時會浪費時間。 (我個人的經驗是,失去的電話並不足以證明這一點)

+0

嗨,非常感謝您的回答,這就是我所害怕的......我無法強制手機執行位置更新。至少你現在證實了它。關於解決方法,嗯,我的第二個想法是把手機置於離線狀態,然後重新上網,就像飛行模式一樣,但我只是想到手機對核心沒有任何影響......(在這種情況下根本沒有任何信息,可能不會應答尋呼/呼叫/短信)。可悲的是,這個問題更重要一點,因爲它幾乎是所有的時間,當我在辦公室時 – zmiricz

+0

如果發生緊急情況(我的家人發生了一些事情,同事試圖聯繫我,等等......)我甚至都沒有知道我有一個電話.. 我剛剛從朋友那裏得到一個提示,也許我會嘗試將新的基帶固件刷新到與網絡兼容的手機。 (我會試一試)。 我在考慮另一種解決方法,這可能比重新選擇網絡更好,應用程序啓動一個新的調用(也許我會打電話給我自己:)由於不可達性問題,第一次調用嘗試很可能會被放棄,但之後,手機將重新上線。 – zmiricz

+0

順便說一句,你知道爲什麼serviceState.getState()會在我第一次調用它時總是返回STATE_OUT_OF_SERVICE嗎?並強迫電話下線:)並且它不是飛行模式? – zmiricz