共用方式為


快速入門:決定裝置方向 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

您可以在使用 JavaScript 撰寫的應用程式中使用 SimpleOrientation 感應器來決定裝置方向。

這個感應器不會傳回如 "portrait-up" 或 "landscape left" 的屬性,它會傳回旋轉值:如 "Not rotated"、"Rotated90DegreesCounterclockwise" 等等。下表將常用的方向屬性 ("Portrait Up" 等等) 對應到相應的感應器讀數。

方向 相應的感應器讀數
Portrait Up NotRotated
Landscape Left Rotated90DegreesCounterclockwise
Portrait Down Rotated180DegreesCounterclockwise
Landscape Right Rotated270DegreesCounterclockwise

 

目標: 完成這個快速入門之後,您將了解如何使用 SimpleOrientation 感應器來偵測裝置方向。

先決條件

您應該熟悉 HTML、JavaScript 以及事件。

您使用的裝置或模擬器必須支援加速計。

完成所需的時間: 15 分鐘.

指示

1. 開啟 Microsoft Visual Studio

開啟 Visual Studio 的執行個體。

2. 建立新專案

建立新專案,從 [JavaScript/市集應用程式] 專案類型中選擇 [空白應用程式]****。

3. 取代 JavaScript 程式碼

開啟專案的 default.js 檔案,然後以下列項目取代現有的程式碼。

// For an introduction to the Blank template, see the following documentation:
// https://go.microsoft.com/fwlink/p/?linkid=232509
(function () {
    "use strict";
    var orientationSensor;
    var app = WinJS.Application;

    function id(elementId) {
        return document.getElementById(elementId);
    }

    function onOrientationChanged(e) {
        switch (e.orientation) {
            case Windows.Devices.Sensors.SimpleOrientation.notRotated:
                id('txtOrientation').innerHTML = "Not Rotated";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated90DegreesCounterclockwise:
                id('txtOrientation').innerHTML = "Rotated 90";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated180DegreesCounterclockwise:
                id('txtOrientation').innerHTML = "Rotated 180";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated270DegreesCounterclockwise:
                id('txtOrientation').innerHTML = "Rotated 270";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.faceup:
                id('txtOrientation').innerHTML = "Face Up";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.facedown:
                id('txtOrientation').innerHTML = "Face Down";
                break;
            default:
                id('txtOrientation').innerHTML = "Undefined orientation " + e.orientation;
                break;
        }
    }



    // This function responds to all app activations.
    app.onactivated = function (eventObject) {
        if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
            // Retrieve the default orientation sensor
            orientationSensor = Windows.Devices.Sensors.SimpleOrientationSensor.getDefault();

            // Set the event handler
            orientationSensor.addEventListener("orientationchanged", onOrientationChanged);
            WinJS.UI.processAll();
        }
    };

    app.start();
})();

4. 新增應用程式的 HTML

開啟 Windows 和 Windows Phone 專案的 default.html 檔案,並將下列 HTML 複製到檔案的 BODY 標記中。


<div class="item" id="scenario1Output">
    Orientation: <a id="txtOrientation">no data</a>
</div>

5. 建置、部署以及執行應用程式

按 F5 或選取 [偵錯] > [開始偵錯]****,即可建置、部署以及執行應用程式。

一旦應用程式開始執行,您就可以移動裝置或使用模擬器工具變更加速計的值。

6. 停止應用程式

  1. 按 ALT+Tab 返回 Visual Studio。
  2. 按 Shift+F5 或選取 [偵錯] > [停止偵錯]****,即可停止應用程式。

摘要與後續步驟

前面的範例示範了如何只需要撰寫簡短的程式碼,就可以在您的應用程式中整合簡單的方向感應器輸入。

應用程式會建立與 onactivated 函式中的預設感應器的連線。下行程式碼會執行此步驟。

orientationSensor = Windows.Devices.Sensors.SimpleOrientationSensor.getDefault();

會在 onOrientationChanged 函式中擷取新的感應器資料。每次感應器驅動程式收到感應器的新資料時,都會使用這個函式 (或事件處理常式) 傳送數值給應用程式。應用程式會用下行程式碼登錄這個事件處理常式。

orientationSensor.addEventListener("orientationchanged", onOrientationChanged);

這些新值會透過以下顯示的 DOM 元素更新寫入螢幕。

<div class="item" id="scenario1Output">
    Orientation: <a id="txtOrientation">no data</a>
</div>

您必須使用 faceupfacedown 值來決定何時要儲存狀態資訊和關閉應用程式。

您可以使用其他值來變更畫面方向。

請注意,旋轉值與 faceupfacedown 值互斥。

相關主題

SimpleOrientation Sensor class

SimpleOrientation 感應器範例