zoukankan      html  css  js  c++  java
  • Windows 8 学习笔记(六)—Accelerormeter和GeoLocation

    WinRT中的设备类库中包含多种设备信息,如Sensor重力加速计,Location位置信息,Bluetooth蓝牙,Sms信息收发,下面看看各种使用方式:

    Sensor重力加速器

    Accelerormeter重力加速计对象,通过该对象可以获取重力加速X\Y\Z的值

    首先定义该对象

    Accelerormeter _accelerometer = Accelerometer.GetDefault();

    接下来通过ReadingChanged事件去跟踪X\Y\Z值,Shaken晃动事件去作一些逻辑处理

    注册ReadingChanged事件

    _accelerometer.ReadingChanged += _accelerometer_ReadingChanged;
    void _accelerometer_ReadingChanged(Accelerometer sender, AccelerometerReadingChangedEventArgs args)
            {
                Dispatcher.InvokeAsync(CoreDispatcherPriority.Normal, (s, a) =>
                {
                    AccelerometerReading reading = (a.Context as AccelerometerReadingChangedEventArgs).Reading;
                    tbX.Text = String.Format("{0,5:0.00}", reading.AccelerationX);
                    tbY.Text = String.Format("{0,5:0.00}", reading.AccelerationY);
                    tbZ.Text = String.Format("{0,5:0.00}", reading.AccelerationZ);
                }, this, e);
            }

    注册Shaken事件

    _accelerometer.Shaken += _accelerometer_Shaken;
    void _accelerometer_Shaken(Accelerometer sender, AccelerometerShakenEventArgs args)
            {
                Dispatcher.InvokeAsync(CoreDispatcherPriority.Normal, (s, a) =>
                {
                    _shakeCount++;
                    tbShakeCount.Text = _shakeCount.ToString();
                }, this, e);
            }

    其中需注意两个属性:

    MinimumReportInterval 用于获取重力感应器报告数据的最小间隔时间

    ReportInterval 设置或获取报告间隔值,该值的设置可以反应加速计的敏感性

    aa

     

    GeoLocation位置信息

    位置信息由Windows位置提供商通过WI-FI和IP 地址数据决定当前的地理信息,或者也可以通过GPS获取。通过GeoLocation可以得到准确的位置数据。

    首先定义一个GeoLocation对象

    Geolocator m_geo= new Geolocator();

    接下来通过PositionChanged和 StatusChanged事件获取位置数据和当前位置设备器的状态

    m_geo.PositionChanged += m_geo_PositionChanged;
    Dispatcher.InvokeAsync(CoreDispatcherPriority.Normal, (s, a) =>
                {
    //先得到当前位置对象
                    Geoposition pos = (a.Context as IPositionChangedEventArgs).Position;
                    textblock1.Text = "Latitude: " + pos.Coordinate.Latitude.ToString();
                    textblock2.Text = "Longitude: " + pos.Coordinate.Longitude.ToString();
                    textblock3.Text = "Accuracy: " + pos.Coordinate.Accuracy.ToString();
                }, this, e);

    监视当前位置定位器的状态

    m_geo.StatusChanged += m_geo_StatusChanged;
    void m_geo_StatusChanged(Geolocator sender, StatusChangedEventArgs args)
            {
                Dispatcher.InvokeAsync(CoreDispatcherPriority.Normal, (s, a) =>
                {
                    PositionStatus status = (a.Context as IStatusChangedEventArgs).Status;
                    switch (status)
                    {
                        case PositionStatus.Ready:
                            textblockStatus1.Text = "Ready";
                            break;
                        case PositionStatus.Initializing:
                            textblockStatus1.Text = "Initializing";
                            break;
                        case PositionStatus.NoData:
                            textblockStatus1.Text = "No data";
                            break;
                        case PositionStatus.Disabled:
                            textblockStatus1.Text = "Disabled";
                            break;
                        case PositionStatus.NotInitialized:
                            textblockStatus1.Text = "Not initialized";
                            break;
                        case PositionStatus.NotAvailable:
                            textblockStatus1.Text = "Not available";
                            break;
                        default:
                            textblockStatus1.Text = "Unexpected status";
                            break;
                    }
                }, this, e);
            }

     

    同样也有两个属性,这两个属性都是枚举类型:

    PositionAccuracy:位置精准度,有0(默认)和1(高级别)两个值

    PositionStatus:表明Geolocator提供位置数据的能力,上面例子也列出相应的枚举类型


    Trackback:

    http://www.cnblogs.com/jing870812/archive/2012/04/10/2441447.html

  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/hdjjun/p/2574950.html
Copyright © 2011-2022 走看看