monoGSM信号强度示例
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<Button>(Resource.Id.MyButton);
_telephonyManager = (TelephonyManager)GetSystemService(Context.TelephonyService);
_signalStrengthListener = new GsmSignalStrengthListener ();
button.Click += DisplaySignalStrength;
}
//注册我们要监听的电话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来定制自己的规则。将其对象传递给第二步作为参数
浙公网安备 33010602011771号