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

  • 相关阅读:
    Java基础——clone()方法浅析
    Unity shader error: “Too many texture interpolators would be used for ForwardBase pass”
    ar 解压一个.a文件报错: xxx.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
    How to set up "lldb_codesign" certificate!
    Unity-iPhone has Conflicting Provisioning Settings
    ETC1/DXT1 compressed textures are not supported when publishing to iPhone
    Xcode 提交APP时遇到 “has one iOS Distribution certificate but its private key is not installed”
    XCode iOS之应用程序标题本地化
    苹果电脑(Mac mini或Macbook或iMac)恢复出厂设置
    Unity 4.7 导出工程在XCode10.1上编译报错
  • 原文地址:https://www.cnblogs.com/hdjjun/p/2574950.html
Copyright © 2011-2022 走看看