我們有一個內部的Android應用程序,它是一個預先存在的JME應用程序的遷移。有一個問題,當用戶在現場抱怨應用程序耗盡設備電池,當它試圖發送數據時,信號強度低(這是移動設備中的常見行爲,而不是我們的直接問題)GSM返回'99'時如何確定信號強度?
數據需要立即發送,但不是立即發送,因此我們在發送數據之前對信號強度進行了檢查。此檢查使用PhoneStateListener
和onSignalStrengthsChanged(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可能是錯誤的事情無論如何檢查,我們需要嘗試獲得'實際數據來自多個供應商和多個(澳大利亞)載波的多個手機測試後的傳輸網絡優勢「
我在這裏遇到同樣的問題,如果您有任何解決方法或解決辦法,請與我分享。 – NyanLH
不幸的是,我們發現的唯一解決方案是在應用程序上始終發送「始終發送」設置,該應用程序始終發送數據,而不管GSM強度如何。 –
我也遇到了三星Galaxy Tab 7.7上的這個問題。這是一個問題時,您使用的是哪個版本的Android?當您升級到Android 4.x時,問題是否消失? (星系選項卡在Android 3.x上運行) – Diederik