2016-05-29 29 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是一个有很多值的一类,而我只是想知道什么是测试低信号时间一定量看是否有人有最可靠的方法一些这方面的经验。无线上网的

回答