2011-09-13 53 views
5

我們有一個內部的Android應用程序,它是一個預先存在的JME應用程序的遷移。有一個問題,當用戶在現場抱怨應用程序耗盡設備電池,當它試圖發送數據時,信號強度低(這是移動設備中的常見行爲,而不是我們的直接問題)GSM返回'99'時如何確定信號強度?

數據需要立即發送,但不是立即發送,因此我們在發送數據之前對信號強度進行了檢查。此檢查使用PhoneStateListeneronSignalStrengthsChanged(SignalStrength signalStrength)回調,正如其他許多類似SO問題和文章所建議的。

這可以在我自己的手機上運行(在Telstra Australia上運行)和SignalStrength.getGsmSignalStrength()從預期的0-31返回一個值。然而,在另一個網絡上運行的電話上(澳大利亞Optus),它報告GSM是真的,但在確定信號強度時返回99(即錯誤代碼)。我相信這仍然是正確的行爲,因爲GSM是2G數據,它是應該檢查的3G UMTS/HSPA。如預期的那樣,UMTS/HSPA是手機上的Elixir應用報告的網絡。我們還有未經證實的報道稱我的網絡(澳大利亞電訊公司)報道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真,但總是報告'99'
  • GSM可能是錯誤的事情無論如何檢查,我們需要嘗試獲得'實際數據來自多個供應商和多個(澳大利亞)載波的多個手機測試後的傳輸網絡優勢

回答

3

,看來,這種行爲是特定於三星Galaxy S2,並沒有看到以前的版本(Galaxy S的)。

+0

我在這裏遇到同樣的問題,如果您有任何解決方法或解決辦法,請與我分享。 – NyanLH

+0

不幸的是,我們發現的唯一解決方案是在應用程序上始終發送「始終發送」設置,該應用程序始終發送數據,而不管GSM強度如何。 –

+0

我也遇到了三星Galaxy Tab 7.7上的這個問題。這是一個問題時,您使用的是哪個版本的Android?當您升級到Android 4.x時,問題是否消失? (星系選項卡在Android 3.x上運行) – Diederik