zoukankan      html  css  js  c++  java
  • 简单的方向传感器SimpleOrientationSensor

    SimpleOrientationSensor是一个简单的方向传感器。能够识别手机如下表的6种方向信息:

    SimpleOrientation枚举变量 方向
    NotRotated 设备未旋转
    Rotated90DegreesCounterclockwise 逆时针旋转 90 度
    Rotated180DegreesCounterclockwise 逆时针旋转 180 度
    Rotated270DegreesCounterclockwise 逆时针旋转 270 度
    Faceup 将设备面朝上
    Facedown 将设备面朝下

     下面我们就来实现是否开打方向处理器并在各个不同状态下进行处理。

    (一般的,我都是会将很多代码写在主函数里面,导致代码太臃肿,维护性差,现在我们将它封装起来吧。)

    MainPage.xaml.cs:

            <ToggleSwitch x:Name="toggleSwitch" Header="方向传感器" IsOn="{Binding IsOpen, Mode=TwoWay}"/>

    OrtSensors.cs类:

       /// <summary>
        /// 自定义一个方向传感器类
        /// </summary>
        public class OrtSensors
        {
            public static SimpleOrientationSensor SimpleOrtSensor = SimpleOrientationSensor.GetDefault();//简单方向传感器
    
            private bool isOpen;    //是否打开
    
            public bool IsOpen
            {
                set
                {
                    if (value)
                    {
                        SimpleOrtSensor.OrientationChanged += SimpleOrtSensor_OrientationChanged;
                    }
                    else if (!value)
                    {
                        SimpleOrtSensor.OrientationChanged -= SimpleOrtSensor_OrientationChanged;
                    } 
                    isOpen = value;
                }
                get 
                { 
                    return isOpen; 
                }
            }
    
            void SimpleOrtSensor_OrientationChanged(SimpleOrientationSensor sender, 
                SimpleOrientationSensorOrientationChangedEventArgs args)
            {
                switch (args.Orientation)
                { 
                    case SimpleOrientation.NotRotated:
                        Debug.WriteLine(args.Orientation.ToString());
                        
                        //设备未旋转
                        break;
                    case SimpleOrientation.Rotated180DegreesCounterclockwise:
                        Debug.WriteLine(args.Orientation.ToString());
    
                        //逆时针180
                        break;
                    case SimpleOrientation.Rotated270DegreesCounterclockwise:
                        Debug.WriteLine(args.Orientation.ToString());
    
                        //逆时针270    
                        break;
                    case SimpleOrientation.Rotated90DegreesCounterclockwise:
                        Debug.WriteLine(args.Orientation.ToString());
    
                        //逆时针90
                        break;
                    case SimpleOrientation.Facedown:
                        Debug.WriteLine(args.Orientation.ToString());
    
                        //面朝下
                        break;
                    case SimpleOrientation.Faceup:
                        Debug.WriteLine(args.Orientation.ToString());
    
                        //面朝上
                        break;
                    default:
                        break;
                }
            }
        }

    MainPage.cs:

    //实例化并且设置绑定源
    OrtSensors sensor = new OrtSensors();
            public MainPage()
            {
                this.InitializeComponent();
    
                this.NavigationCacheMode = NavigationCacheMode.Required;
                toggleSwitch.DataContext = sensor;
            }
  • 相关阅读:
    VCC、VDD、VEE等区别
    Matlab运行速度/效率受哪些因素影响?
    strtok/atoi/atof/atol函数用法 详解
    双色球随机生成
    万能指针void*学习
    空指针和 指向指针的指针
    指针运算
    快速编译c/cpp文件
    贪吃蛇(C)
    判断规定时间内有无输入
  • 原文地址:https://www.cnblogs.com/yffswyf/p/4135097.html
Copyright © 2011-2022 走看看