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来定制自己的规则。将其对象传递给第二步作为参数
posted @ 2014-01-05 00:19  追逐的小学生  阅读(347)  评论(0)    收藏  举报