사용할 광원 센서 선택(HTML)

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

센서를 사용하면 앱에서 장치와 장치를 둘러싼 실제 주변 환경 간의 관계를 알 수 있습니다. 센서는 장치의 방향과 움직임을 앱에 알려줄 수 있습니다. 이러한 센서는 장치의 동작을 사용하여 화면의 캐릭터 정렬, 조종석에서 장치를 조종 핸들로 사용하는 상황 시뮬레이트 등 고유한 형태의 입력을 제공하여 게임, 증강 현실 앱 또는 유틸리티 앱을 더 유용하고 대화형으로 만드는 데 도움이 될 수 있습니다.

일반적으로 앱에서 센서만 사용할지 또는 센서를 통해 추가적인 제어 메커니즘만 제공할지 여부를 처음부터 결정합니다. 예를 들어 장치를 가상 조종 핸들로 사용하는 드라이빙 게임의 경우 화면의 GUI를 통해 제어할 수 있습니다. 이렇게 하면 시스템에서 사용할 수 있는 센서에 관계없이 앱이 작동합니다. 반면, 구슬 이동 미로는 적절한 센서가 있는 시스템에서만 작동하도록 코딩할 수 있습니다. 전적으로 센서에만 의존할지 여부를 전략적으로 선택해야 합니다. 마우스/터치 제어 체계는 제어를 강화하는 대신 몰입도가 저하됩니다.

센서 일괄 처리

일부 센서는 일괄 처리 개념을 지원합니다. 이는 사용할 수 있는 개별 센서에 따라 다릅니다. 센서에서 일괄 처리를 구현하는 경우 지정된 시간 간격 동안 여러 데이터 요소를 수집한 후 해당 데이터 전부를 한 번에 전송합니다. 이는 센서가 읽기를 수행하자마자 발견한 결과를 보고하는 일반적인 동작과 다릅니다. 데이터를 수집한 후 전달하는 방식을 보여 주는 다음 다이어그램을 고려하세요(먼저 일반적인 전달, 그 후 일괄 처리 전달).

센서 일괄 처리 컬렉션

센서 일괄 처리의 기본 장점은 배터리 수명이 연장된다는 것입니다. 데이터가 즉시 전송되지 않으면 프로세서 전원이 절약되고 데이터를 즉시 처리해야 할 필요성이 방지됩니다. 시스템의 일부는 필요할 때까지 절전 상태를 유지할 수 있어 상당한 절전 효과가 발생합니다.

대기 시간을 조정하여 센서가 일괄 처리를 보내는 빈도에 영향을 줄 수 있습니다. 예를 들어 Accelerometer 센서에는 ReportLatency 속성이 있습니다. 응용 프로그램에 대해 이 속성을 설정하면 센서가 지정된 시간 후에 데이터를 보냅니다. ReportInterval 속성을 설정하여 지정된 대기 시간 동안 누적되는 데이터의 양을 제어할 수 있습니다.

대기 시간 설정과 관련하여 염두에 둬야 할 몇 가지 주의 사항이 있습니다. 첫 번째 주의 사항은 각 센서에 센서 자체를 기반으로 지원할 수 있는 MaxBatchSize이(가) 있다는 점입니다. 이는 센서가 강제로 이벤트를 보내기 전에 캐시할 수 있는 이벤트 수입니다. MaxBatchSize을(를) ReportInterval(으)로 곱하면 최대 ReportLatency 값이 결정됩니다. 이 값보다 높은 값을 지정하는 경우 데이터가 손실되지 않도록 최대 대기 시간이 사용됩니다. 또한 여러 응용 프로그램에서 각각 원하는 대기 시간을 설정할 수 있습니다. 모든 응용 프로그램의 요구 사항을 충족하기 위해 최단 대기 시간이 사용됩니다. 이러한 사실 때문에 응용 프로그램에 설정한 대기 시간이 관찰된 대기 시간과 일치하지 않을 수 있습니다.

센서에서 일괄 처리 보고를 사용하는 경우 GetCurrentReading을(를) 호출하면 데이터의 현재 일괄 처리가 지워지고 새 대기 시간이 시작됩니다.

가속도계

Accelerometer 센서는 장치의 X, Y 및 Z축에서 G 힘 값을 측정하며 간단한 동작 기반 응용 프로그램에 유용합니다. G 힘 값에는 중력으로 인한 가속도가 포함됩니다. 테이블에서 장치의 SimpleOrientationFaceUp인 경우 가속도계는 Z축에서 -1G로 표시됩니다. 따라서 가속도계는 좌표 가속도만 측정하는 것이 아니라 속도의 변화율을 측정합니다. 가속도계를 사용하는 경우 중력의 중력 벡터와 동작의 선형 가속도 벡터를 구분해야 합니다. 움직이지 않는 장치의 경우 중력 벡터가 1로 정규화되어야 합니다.

다음 다이어그램에서 각 항목은 다음을 나타냅니다.

  • V1 = 벡터 1 = 중력으로 인한 힘
  • V2 = 벡터 2 = 장치 섀시의 Z축(화면 뒤쪽에서 가리킴)
  • Θi = 기울기 각도(경사) = 장치 섀시의 –Z축과 중력 벡터 사이의 각도

가속도계가속도계 측정

가속도계 센서를 사용할 수 있는 앱에는 장치를 기울이는 방향으로 화면의 구슬이 굴러가는 게임(중력 벡터)이 포함됩니다. 이러한 유형의 기능은 Inclinometer의 기능과 유사하며, 피치 및 롤의 조합을 사용하여 해당 센서로 수행할 수도 있습니다. 가속도계의 중력 벡터를 사용하면 장치 이동을 위해 수학적으로 쉽게 조작되는 벡터가 제공되므로 이 작업이 간소화됩니다. 또 다른 예로 사용자가 장치를 그을 때 채찍 소리를 내는 앱(선형 가속도 벡터)이 있습니다.

회전계

Gyrometer 센서는 X, Y 및 Z축에서 각 속도를 측정합니다. 장치 방향은 관련이 없고 장치 회전 속도가 중요한 간단한 동작 기반 앱에서 유용합니다. 회전계에서 하나 이상의 축을 따라 데이터 노이즈나 일정한 바이어스가 발생할 수 있습니다. 회전계에서 바이어스가 발생하는지 확인한 다음 앱에서 적절하게 보정하기 위해 가속도계 쿼리를 통해 장치가 이동 중인지 여부를 확인해야 합니다.

피치, 롤 및 요가 있는 회전계

회전계 센서를 사용할 수 있는 앱의 예로 장치의 빠른 회전을 기준으로 룰렛 휠을 돌리는 게임이 있습니다.

나침반

Compass 센서는 지구의 수평면을 기준으로 자북과 관련된 2D 침로를 반환합니다. 특정 장치 방향을 확인하거나 3D 공간의 항목을 나타내는 데 나침반 센서를 사용하면 안 됩니다. 지리적 특성으로 인해 침로에 자연 편차가 발생할 수 있으므로 일부 시스템은 HeadingMagneticNorthHeadingTrueNorth를 둘 다 지원합니다. 앱에 적합한 값을 고려하지만, 모든 시스템에서 실제 북쪽 값을 보고하는 것은 아닙니다. 회전계 및 자력계(자기 강도 세기를 측정하는 장치) 센서는 해당 데이터를 결합하여 나침반 침로를 생성하므로 데이터 안정화 효과가 있습니다(자기장 세기는 전기 시스템 구성 요소로 인해 불안정함).

자북극과 관련된 나침반 값

나침도를 표시하거나 지도를 탐색하려는 앱은 일반적으로 나침반 센서를 사용합니다.

경사계

Inclinometer 센서는 장치의 요, 피치 및 롤 값을 지정하며 장치의 공간 위치가 중요한 앱에 가장 적합합니다. 피치와 롤은 가속도계의 중력 벡터를 가져오고 회전계의 데이터를 통합하여 파생됩니다. 요는 자력계 및 회전계(나침반 침로와 유사함) 데이터에서 설정됩니다. 경사계는 쉽게 이해할 수 있는 방식으로 고급 방향 데이터를 제공합니다. 장치 방향이 필요하지만 센서 데이터를 조작할 필요가 없는 경우 경사계를 사용합니다.

피치, 롤 및 요 데이터가 있는 경사계

장치의 방향에 맞게 보기를 변경하는 앱은 경사계 센서를 사용할 수 있습니다. 장치의 요, 피치 및 롤과 일치하는 비행기를 표시하는 앱도 경사계 값을 사용합니다.

방향 센서

장치 방향은 사원수 및 회전 행렬을 통해 표시됩니다. OrientationSensor는 절대 침로를 기준으로 장치의 공간 위치를 결정할 때 높은 정밀도를 제공합니다. OrientationSensor 데이터는 가속도계, 회전계 및 자력계에서 파생됩니다. 따라서 경사계 및 나침반 센서는 둘 다 사원수 값에서 파생될 수 있습니다. 사원수 및 회전 행렬은 고급 수학적 조작에 적합하며 그래픽 프로그래밍에서 자주 사용됩니다. 대부분의 변형이 사원수 및 회전 행렬을 기반으로 하기 때문에 복잡한 조작을 사용하는 앱은 방향 센서를 사용하는 것이 좋습니다.

방향 센서 데이터

방향 센서는 장치의 뒤쪽이 가리키는 방향에 따라 환경에 오버레이를 그리는 고급 강화 현실 앱에서 자주 사용됩니다.

단순 방향

SimpleOrientationSensor는 지정된 장치의 현재 사분면 방향이나 앞면 위로 또는 앞면 아래로 상태인지 감지합니다. 6개의 가능한 SimpleOrientation 상태(NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown)가 있습니다.

지면에 수평 또는 수직으로 장치를 잡고 있는지에 따라 표시를 변경하는 뷰어 앱은 SimpleOrientationSensor의 값을 사용하여 장치를 잡고 있는 방식을 확인합니다.

관련 항목

센서 데이터 및 디스플레이 방향