使用Windows phone 8.1開發電子羅盤

來源:互聯網
上載者:User

羅盤,估計也不用我過多介紹,學過初中物理的都知道,不管是指南針,還是指北針,其本質就是用來辨別方向的。

操作電子羅盤偉感器也不複雜,主要就是兩個角度:

1、當前方向與磁北的夾角;

2、當前方向與地北的夾角。

同時,我們也瞭解到,地理北極與地磁北極並不是重合的,存在地偏角。在讀取電子羅盤資料時,可以優先考慮讀取與地北極的夾角,如果讀不到地北極的夾角,再讀取磁北極的夾角資料。

CompassReading類(位於Windows.Devices.Sensors命名空間)封裝了從電子羅盤所讀到的資料。

1、HeadingMagneticNorth屬性:擷取當前方向與磁北的夾角度數。

2、HeadingTrueNorth屬性:該屬性擷取的是真北夾角,即地理夾角。我們注意到它的類型為double?,即Nullable<double>,表明這個數值有可能為null,也就是說有可能擷取不到地北夾角的值。在使用時,我們可以先判斷地北角是否為null,如不為null就用這個值;如果為null就用磁北角的值。

3、HeadingAccuracy屬性:表示羅盤讀數的準確性,如果讀數精度較高,其返回High。我們的應用程式可以在合適的時候檢查這個屬性是否為High,如果不是,可以考慮提示使用者校準羅盤。

提到校準,不得不說一下的是,校準羅盤是不需要系統提示,應用也可以不提示。只是考慮到使用者體驗的問題,可以提示使用者校準。校準方法很簡單,不管你是使用WP內建的地圖應用,還是其他第三方應用,或者你自己開發的應用。只要在使用到羅盤的地方,你拿著手機,在空中做幾次“8”字形來回移動就可以了,不需要等待提示,只要在用到羅盤的地方就可以隨時校準。

電子羅盤的API封裝在Windows.Devices.Sensors.Compass類中,WP API中的所有感應器調用都很簡單,首先擷取到某個感應器類的執行個體,一般通過GetDefault方法(靜態方法)就能返回,然後設定讀取的時間間隔,以毫秒為單位,如果你希望每秒讀一次資料,就把ReportInterval設定為1000,但是,這個時間間隔不能小於MinimumReportInterval屬性指定的值,這個要注意,設定為20毫秒以上的間隔,效果都不錯了,當然這要看你使用的實際情況了。

最後處理ReadingChanged事件,當有新的資料讀到時,會引發該事件,並把新讀到的資料傳遞給該事件,我們就可以從事件參數中擷取最新的讀數。

好了,理論永遠都是抽象的,下面給大家看一下我做的一個簡陋指南針,確實很簡,希望大家莫笑,因為本人較菜,所以連首頁上的羅盤也是用XAML直接畫的。

先上一個效果圖。

看吧,簡陋吧,沒辦法,人窮就是這樣,要簡食素衣。指南針背景我是用幾個圈圈畫的,指示方向的指標是用Path元素畫的。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.