2016-05-29 71 views
1

我想檢測用戶處於低接收狀態(低網絡信號)一段時間(例如5分鐘)的情況,我想知道什麼值得依賴。android - 檢測低網絡信號,取決於哪個值

我現在擁有的是:

public class RadiationTest { 
    TelephonyManager TelephonManager; 
    SignalStrengthListener signallistener; 
    private Context context; 

    public RadiationTest(Context context) { 
     this.context = context; 
     try { 
      signallistener = new SignalStrengthListener(); 
      TelephonManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
      TelephonManager.listen(signallistener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

    class SignalStrengthListener extends PhoneStateListener { 

     @Override 
     public void onSignalStrengthsChanged(android.telephony.SignalStrength signalStrength) { 
      super.onSignalStrengthsChanged(signalStrength); 
      int SignalStrength_ASU = signalStrength.getGsmSignalStrength(); 
      int SignalStrength_dBm = (2 * SignalStrength_ASU) - 113; // -> dBm 

      // here I can use dbm 
      // I can also get the bars with signalStrength.getLevel() 
     } 

    } 
} 

綜觀DBM值 - 似乎它的大部分的時間 - 這意味着良好的接待,並與低接待要去的地方的時候,它得到負值。來自this answer我知道dbm的負值意味着接收率很低 - 但它不是負面的,這隻意味着你的設備非常敏感。 (見答案中的表格)。

此外,dbm值似乎會隨着設備而改變。

看看signalStrength.getLevel(),它會給你多少接待酒吧,它看起來像一個不錯的選擇。

考慮到這一點,SignalStrength是一個有很多值的一類,而我只是想知道什麼是測試低信號時間一定量看是否有人有最可靠的方法一些這方面的經驗。無線上網的

回答