• 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,也就是说它会认为并未断网。小于怀疑是由于其模拟器所在系统与真机在进行通讯,其也就是认为网络未中断。

    有道无术,术尚可求;有术无道,止于术。
  • 相关阅读:
    问题 F: A+B和C (15)
    问题 E: Shortest Distance (20)
    完数
    分解质因数
    念整数
    问题 B: 习题7-7 复制字符串中的元音字母
    问题 A: 习题7-5 字符串逆序存放
    问题 D: 习题6-12 解密
    计算机的重点编码方式
    PyCharm更换第三方包源
  • 原文地址:https://www.cnblogs.com/chengcanghai/p/15793070.html
Copyright © 2020-2023  润新知