Try to use the good old PhoneStateListener to listen for signal strength changes. Here is what worked for me. Use this to register the listener:
private TelephonyManager telManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int currentSignalStrength = 0;
int asu = 0;
telManager.listen(new SignalStrengthListener(), PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
And this is the actual listener:
private class SignalStrengthListener extends PhoneStateListener{
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength)
{
super.onSignalStrengthsChanged(signalStrength);
if (telManager.getPhoneType()== TelephonyManager.PHONE_TYPE_CDMA)
currentSignalStrength = signalStrength.getCdmaDbm();
else
asu = signalStrength.getGsmSignalStrength();
}
}
Tested on Xperia Z which has the same problems using CellInfoGsm.