最近因为工作的需要,要自定义展示无线信号强弱的需要,就通过利用系统广播的方式实现了一个自定义的观点——WifiStateView下面话不多说了,感兴趣的朋友们一起来看看详细的介绍吧。
用不同的图片来表示无线信号的强弱,可以自定义无线信号等级
图标简陋了点,根据需要来替换即可
/* * *叶应是叶 *时间:2017/8/22十八25 *描述: */公开课WifiStateView延伸AppCompatImageView { 私人WifiManager WifiManager; 私人WifiHandler WifiHandler;//没有开启Wifi或开启了Wifi但没有连接 私有静态最终int LEVEL_NONE=0;//无线信号等级(最弱) 私有静态最终int LEVEL_1=1;//无线信号等级 私有静态最终int LEVEL_2=2;//无线信号等级 私有静态最终int LEVEL_3=3;//无线信号等级(最强) 私有静态最终int LEVEL_4=4; 私人最终字符串标签=癢ifiStateView”; 私有静态类{WifiHandler扩展处理程序//虚引用 私人WeakReferencestateViewWeakReference; WifiHandler (WifiStateView WifiStateView) { stateViewWeakReference=new WeakReference<祝辞(wifiStateView); } @Override 公共空间handleMessage(消息味精){ WifiStateView WifiStateView=stateViewWeakReference.get (); 如果(wifiStateView==null) { 返回; } 开关(msg.what) { 案例LEVEL_1: wifiStateView.setImageResource (R.drawable.wifi_1); 打破; 案例LEVEL_2: wifiStateView.setImageResource (R.drawable.wifi_2); 打破; 案例LEVEL_3: wifiStateView.setImageResource (R.drawable.wifi_3); 打破; 案例LEVEL_4: wifiStateView.setImageResource (R.drawable.wifi_4); 打破; 案例LEVEL_NONE: 默认值: wifiStateView.setImageResource (R.drawable.wifi_none); 打破; } } } 私人BroadcastReceiver wifiStateReceiver=new BroadcastReceiver () { @Override 公共空间onReceive(上下文语境,意图意图){ 日志。e(标签,“行动”+ intent.getAction ()); 开关(intent.getAction ()) { 案例WifiManager.WIFI_STATE_CHANGED_ACTION: 如果(wifiManager.getWifiState ()==WifiManager.WIFI_STATE_DISABLING) { wifiHandler.sendEmptyMessage (LEVEL_NONE); } 打破; 案例WifiManager.RSSI_CHANGED_ACTION: 如果(wifiManager.getWifiState ()==WifiManager.WIFI_STATE_DISABLED) { wifiHandler.sendEmptyMessage (LEVEL_NONE); 返回; } WifiInfo WifiInfo=wifiManager.getConnectionInfo (); int水平=WifiManager.calculateSignalLevel (wifiInfo.getRssi (), 5); 日志。e(标签,“水平:”+级); wifiHandler.sendEmptyMessage(水平); 打破; } } }; 公共WifiStateView(上下文语境){ 这(上下文,null); } 公共WifiStateView(上下文语境,@Nullable AttributeSet attrs) { 这(上下文、attrs 0); } 公共WifiStateView(上下文语境,@Nullable AttributeSet attrs, int defStyleAttr) { 超级(上下文、attrs defStyleAttr); wifiManager=(wifiManager) context.getApplicationContext () .getSystemService (Context.WIFI_SERVICE); wifiHandler=new wifiHandler(这个); } @Override 保护无效onAttachedToWindow () { super.onAttachedToWindow (); IntentFilter IntentFilter=new IntentFilter ();//无线连接状态变化 intentFilter.addAction (WifiManager.WIFI_STATE_CHANGED_ACTION);//无线信号强度变化 intentFilter.addAction (WifiManager.RSSI_CHANGED_ACTION); getContext ()。registerReceiver (wifiStateReceiver intentFilter); } @Override 保护无效onDetachedFromWindow () { super.onDetachedFromWindow (); wifiHandler.removeCallbacksAndMessages(空); getContext () .unregisterReceiver (wifiStateReceiver); } }
<强>这里提供代码下载:强>
github地址:https://github.com/leavesC/WifiStateView
本地下载:http://xiazai.jb51.net/201708/yuanma/WifiStateView (jb51.net) . rar
以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。