目前我正在编写一个必须采用用户移动设备信号强度的服务。
就此而言,我已经实现了Service的内部类(比如myPhoneStateListener),它扩展了PhoneStateListener,并且通过覆盖onSignalStrengthsChanged方法,我可以成功读取Signal Strength值(来自getGsmSignalStrength()方法)。 p>
请注意,TelephonyManager实例和侦听器已在Service OnCreate方法中初始化。
问题在于我不希望将onSignalStrengthsChanged体中获得的第一个值作为信号强度值。
我想要实现的是以某种方式等待PhoneStateListener并确保侦听器已生成至少10个样本,然后将最后一个Signal Strength保存为有效值。
请注意,目前我正在阅读Service onStartCommand方法中的值。
为此,我尝试在Service类中定义一个局部变量(作为计数器),每次调用onSignalStrengthsChanged时它都会增加1。另一方面onStartCommand我会等待并检查变量是否达到10:
while ( m_nSignalStrength_Count < 10 )
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
但是当我在调试模式中检查时,变量根本没有改变。