zoukankan      html  css  js  c++  java
  • Xamarin.Forms Wifi 连接 及VS下接口快速抽取

    Wifi接口与实现

    通用平台下实现wifi接口

        public interface INetWorkCheck
        {
            bool IsWifiConnected();
        }

    在android 平台实现INetWorkCheck,但此种方式是比较垃圾的。从google看到的情况,是不推荐进行如此操作的。

        public class NetWorkCheck : INetWorkCheck
        {
            public bool IsWifiConnected()
            {
                ConnectivityManager manager = ConnectivityManager.FromContext(MainActivity.AppContext);
                //以下方法获取网络状态比较低效,并且会出现资源竞争。推荐使用registerNetworkCallback
                //registerNetworkCallback 参考链接 https://docs.microsoft.com/en-us/dotnet/api/android.net.connectivitymanager.registernetworkcallback?view=xamarin-android-sdk-12
                NetworkInfo info = manager.GetNetworkInfo(ConnectivityType.Wifi);
                return info.IsConnected;
            }
        }

    注意上述注释中提到的低效问题……相关的google参考链接如下。

    //google  ConnectivityManager  GetNetworkInfo  参考链接 

    由于wifi 检测是经常使用的,为了方便使用小子将其在程序入口的app.cs中定义了一个BoolWifi属性,以方便调用 。

            static INetWorkCheck wificheck = DependencyService.Get<INetWorkCheck>();
            //此应该放入utils中定时执行
            //private static bool boolWifi;
            public static bool BoolWifi
            {
                get => wificheck.IsWifiConnected();
            }

     快速抽取interface

    下图为在VS中class快速抽取为interface的操作方法

    选中你要抽取的class后右键,如下图,然后点击Quick Actions and Refactorings…

     调试注意事项

    另外注意一下在模拟器中调试与在真机中调试,对于wifi是否连网的判断有区别,在模拟器中即使完全断网了,其也返回true,也就是说它会认为并未断网。小于怀疑是由于其模拟器所在系统与真机在进行通讯,其也就是认为网络未中断。

    有道无术,术尚可求;有术无道,止于术。
  • 相关阅读:
    JDBC
    Maven入门初级教程
    os.path路径拓展 python3
    requests实现文件下载, 期间显示文件信息&下载进度_python3
    yield浅析-Python3
    Scoop
    U盘启动盘制作工具(安装Linux)
    JavaScript摘要笔记
    Hexo+Github搭建博客&各种设置
    Linux下搭建svn服务端
  • 原文地址:https://www.cnblogs.com/chengcanghai/p/15793070.html
Copyright © 2011-2022 走看看