Share via


빠른 시작: 광원 변화에 반응(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

주변 광원 센서를 사용하면 JavaScript로 작성된 앱에서 광원 변화를 탐지할 수 있습니다.

Windows.Devices.Sensors 네임스페이스에는 앱이 현재 LUX 값 조도를 검색하는 데 사용할 수 있는 LightSensor 개체에 대한 지원이 포함되어 있습니다. LUX 값에 대한 자세한 내용은 MSDN에서 센서 API 설명서를 참조하세요.

목표: 이 빠른 시작을 완료하면 광원 센서를 사용하여 현재 LUX 값 조도를 검색하는 방법을 이해하게 됩니다.

사전 요구 사항

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 lightSensor;

    // This function is invoked within onDataChanged to
    // retrieve the given identifier from the HTML document.
    function id(elementId) {
        return document.getElementById(elementId);
    }

    // This function is called each time an accelerometer event
    // is fired by the driver.
    function onDataChanged(e) {
        id('eventOutputIlluminance').innerHTML = e.reading.illuminanceInLux.toFixed(2);
    }

    var app = WinJS.Application;

    // This function responds to all app activations.
    app.onactivated = function (eventObject) {
        if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
            if (lightSensor == null) {
                lightSensor = Windows.Devices.Sensors.LightSensor.getDefault();

                // Set the report interval
                var minimumReportInterval = lightSensor.minimumReportInterval;
                var reportInterval = minimumReportInterval > 16 ? minimumReportInterval : 16;
                lightSensor.reportInterval = reportInterval;

                // Establish the event handler
                lightSensor.addEventListener("readingchanged", onDataChanged);

            WinJS.UI.processAll();
        }
    };

    app.start();
})();

4. 앱에 대한 HTML 추가

Windows 및 Windows Phone 프로젝트에 대한 default.html 파일을 열고 다음 HTML을 파일의 BODY 태그 내부에 복사합니다.


<div class="item" id="scenario1Output">
    Illuminance: <a id="eventOutputIlluminance">no data</a>
</div>

5. 앱 빌드, 배포 및 실행

F5 키를 누르거나 디버그 > 디버깅 시작을 선택하여 앱을 빌드, 배포 및 실행합니다.

앱이 실행 중이면 장치를 이동하거나 에뮬레이터 도구를 사용하여 가속도계 값을 변경할 수 있습니다.

6. 앱 중지

  1. Alt+Tab을 눌러 Visual Studio로 전환합니다.
  2. Shift+F5를 누르거나 디버그 > 디버깅 중지를 선택하여 앱을 중지합니다.

요약 및 다음 단계

앞의 예는 앱에서 광원 센서 입력을 통합하기 위해 작성해야 하는 코드의 양이 얼마나 작은지를 보여줍니다.

이 예에서 새 센서 데이터는 onDataChanged 함수에서 캡처됩니다. 센서 드라이버는 광원 센서 표기 변화를 탐지할 때마다 이 함수(또는 이벤트 처리기)를 사용하여 새 값을 앱에 전달합니다.

    function onDataChanged(e) {
        id('eventOutputIlluminance').innerHTML = e.reading.illuminanceInLux.toFixed(2);
    }

이 새로운 값은 아래 표시된 DOM 요소로의 업데이트를 통해 화면에 쓰입니다.

<div class="item" id="scenario1Output">
    Illuminance: <a id="eventOutputIlluminance">no data</a>
</div>

앱은 onactivated 함수 내에서 보고 간격을 설정합니다. 이 코드는 장치에서 지원되는 최소 간격을 검색하여 요청된 16밀리초 간격(약 60Hz 새로 고침 빈도)과 비교합니다. 지원되는 최소 간격이 요청된 간격보다 큰 경우 코드는 값을 최소값으로 설정합니다. 그렇지 않으면 값을 요청된 간격으로 설정합니다.

var minimumReportInterval = accelerometer.minimumReportInterval;
var reportInterval = minimumReportInterval > 16 ? minimumReportInterval : 16;
accelerometer.reportInterval = reportInterval;

단순 앱을 작성하는 경우 다음 단계에서는 일반적으로 센서 입력을 그래픽 출력과 통합하는 작업을 수행하게 됩니다.

예를 들어, 배경색과 전경색 간의 대비를 늘리거나 줄여서 광원 변화에 응답하는 단순 텍스트 뷰어 앱을 만들 수 있습니다.

관련 항목

LightSensor class

LightSensor 샘플