1.GSM信号强度主要涉及需要用到两个类
PhoneStateListener类 和TelephonyManager类
TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。
当信号改变时回调PhoneStateListener类 的onSignalStrengthsChanged()
PhoneStateListener.OnSignalStrengthsChanged()实现
class GsmSignalStrengthListener : PhoneStateListener { public delegate void SignalStrengthChangedDelegate(int strength); public event SignalStrengthChangedDelegate SignalStrengthChanged; public override void OnSignalStrengthsChanged(SignalStrength newSignalStrength) { if (newSignalStrength.IsGsm) { if (SignalStrengthChanged != null) { SignalStrengthChanged(newSignalStrength.GsmSignalStrength); } } } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); button = FindViewById
//注册我们要监听的电话GSM状态改变事件。
void DisplaySignalStrength(object sender, EventArgs e){ _telephonyManager.Listen(_signalStrengthListener, PhoneStateListenerFlags.SignalStrengths); _signalStrengthListener.SignalStrengthChanged += HandleSignalStrengthChanged; }
void HandleSignalStrengthChanged(int strength){_signalStrengthListener.SignalStrengthChanged -= HandleSignalStrengthChanged;_telephonyManager.Listen(_signalStrengthListener, PhoneStateListenerFlags.None);button.Text = string.Format("GPS Signal Strength ({0}):", strength);}
2.通过该实例,我们可以看到,如果我们想要监听gsm的状况,需要这么几步 第一:获取电话服务管理器TelephonyManager _telephonyManager= (TelephonyManager)GetSystemService(Context.TelephonyService);
第二:通过TelephonyManager注册我们要监听的电话GSM状态改变事件。_telephonyManager.listen(_signalStrengthListener,PhoneStateListenerFlags.SignalStrengths);这里的
PhoneStateListenerFlags.SignalStrengths就是我们想要监听的GSM的状态改变事件。 第三步:通过extends PhoneStateListener来定制自己的规则。将其对象传递给第二步作为参数