다음을 통해 공유


센서

센서를 통해 앱은 디바이스와 디바이스 주변의 물리적 세계 사이의 관계를 알 수 있습니다. 센서는 앱에 디바이스의 이동하는 방향, 출발한 방향 및 움직임을 알릴 수 있습니다. 이러한 센서는 장치의 동작을 사용하여 화면에 문자를 정렬하는 시뮬레이션 또는 조종석에 있고 장치를 스티어링 휠로 사용하는 시뮬레이션과 같은 독특한 형태의 입력을 제공하여 게임, 증강 현실 앱 또는 유틸리티 앱을 보다 유용하고 대화형으로 만드는 데 도움을 줄 수 있습니다.

일반적으로 앱이 센서에만 의존할지 또는 센서가 추가 제어 메커니즘을 제공할지 여부를 처음부터 결정합니다. 예를 들어 디바이스를 가상 스티어링 휠로 사용하는 드라이빙 게임은 화면 GUI를 통해 제어할 수도 있습니다. 이러한 방식으로 앱은 시스템에서 사용할 수 있는 센서에 관계없이 작동합니다. 반면에 적절한 센서가 있는 시스템에서만 작동하도록 대리석 기울기 미로를 코딩할 수 있습니다. 전략적으로 센서에 완전히 의존할지 여부를 선택해야 합니다. 마우스/터치 제어 체계는 더 큰 제어를 위해 몰입을 교환합니다.

항목 설명
센서 보정하기 나침반, 경사계 및 방향 센서인 자력계를 기반으로 하는 디바이스의 센서는 환경 요인으로 인해 보정이 필요하게 될 수도 있습니다. 디바이스에 보정이 필요한 경우 MagnetometerAccuracy 열거는 작업 과정을 결정하는 데 도움이 될 수 있습니다.
센서 방향 OrientationSensor 클래스의 센서 데이터는 참조 축에 의해 정의됩니다. 이러한 축은 장치의 가로 방향에 의해 정의되며 사용자가 장치를 돌릴 때 장치와 함께 회전합니다.
가속도계 사용하기 가속도계를 사용하여 사용자 이동에 응답하는 방법을 알아봅니다.
나침반 사용하기 나침반을 사용하여 현재의 heading을 확인하는 방법을 알아봅니다.
회전계 사용하기 자이로미터를 사용하여 사용자 이동의 변화를 감지하는 방법을 알아봅니다.
경사계 사용하기 경사계를 사용하여 pitch, roll 및 yaw를 결정하는 방법을 알아봅니다.
광 센서 사용하기 주변 광원 센서를 사용하여 조명의 변화를 감지하는 방법을 알아봅니다.
방향 센서 사용하기 방향 센서를 사용하여 디바이스 방향을 확인하는 방법을 알아봅니다.

센서 일괄 처리

일부 센서는 일괄 처리 개념을 지원합니다. 이는 사용 가능한 개별 센서에 따라 달라집니다. 센서가 일괄 처리를 구현하는 경우, 센서는 지정된 시간 간격 동안 여러 데이터 요소를 수집한 다음 모든 데이터를 한 번에 전송합니다. 이는 센서가 판독을 수행하는 즉시 결과를 보고하는 일반적인 동작과 다릅니다. 데이터를 수집한 다음 배달하는 방법을 보여 주는 다음의 다이어그램을 고려합니다. 먼저 일반 배달을 사용한 다음 일괄 처리된 배달을 사용합니다.

센서 일괄 처리 컬렉션

센서 일괄 처리의 주요 이점은 배터리 수명의 연장입니다. 데이터가 즉시 전송되지 않으면 프로세서 전원이 절약되고 데이터를 즉시 처리할 필요가 없습니다. 시스템의 일부는 필요 시까지 절전 모드로 작동하여 상당한 전력을 절약합니다.

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

대기 시간 설정과 관련하여 유의해야 할 몇 가지 주의 사항이 있습니다. 첫 번째 주의 사항은 각 센서에 센서 자체에 따라 지원할 수 있는 MaxBatchSize가 있다는 것입니다. 이는 센서가 강제로 보내기 전에 캐시할 수 있는 이벤트 수입니다. MaxBatchSizeReportInterval로 곱하면 최대 ReportLatency 값이 결정됩니다. 이 값보다 높은 값을 지정하면 최대 대기 시간이 사용되어 데이터가 손실되지 않도록 합니다. 또한 여러 애플리케이션이 각각 원하는 대기 시간을 설정할 수 있습니다. 모든 애플리케이션의 요구 사항을 충족하기 위해 가장 짧은 대기 시간이 사용됩니다. 이러한 사실 때문에 애플리케이션에서 설정한 대기 시간은 관찰된 대기 시간과 일치하지 않을 수 있습니다.

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

가속도계

가속도계 센서는 디바이스의 X, Y 및 Z 축을 따라 G-force 값을 측정하며, 이는 간단한 동작 기반 애플리케이션에 적합합니다. 중력으로 인한 가속이 G-force 값에 포함됩니다. 테이블에 디바이스에 대한 FaceUpSimpleOrientation이 있는 경우, 가속도계는 Z축에서 -1G를 읽습니다. 따라서 가속도계는 좌표 가속만을 측정하지 않습니다. 이는 속도의 변화 속도입니다. 가속도계를 사용하는 경우, 중력의 중력 벡터와 동작의 선형 가속 벡터를 구분해야 합니다. 고정 디바이스의 경우 중력 벡터가 1로 정규화되어야 합니다.

다음의 다이어그램에 설명되어 있습니다.

  • V1 = 벡터 1 = 중력으로 인한 힘
  • V2 = 벡터 2 = 디바이스 섀시의 -Z축(화면 뒤를 가리킴).
  • Θi = 기울기 각도(경사) = 디바이스 섀시의 –Z축과 중력 벡터 사이의 각도

가속도계가속도계 측정값

가속도계 센서를 사용할 수 있는 앱에는 장치를 기울이는 방향으로 화면의 구슬이 굴러가는 게임(중력 벡터)이 포함됩니다. 이 형식의 기능은 경사계의 기능과 밀접하게 미러 피치와 롤의 조합을 사용하여 해당 센서로 수행할 수도 있습니다. 가속도계의 중력 벡터를 사용하면 디바이스 기울기를 위해 쉽게 수학적으로 조작되는 벡터를 제공하여 이를 다소 간소화할 수 있습니다. 또 다른 예시는 사용자가 장치를 공중으로 쓸어 넘길 때 채찍의 크래킹 소리를 만드는 앱입니다(선형 가속 벡터).

구현 예시는 가속도계 샘플을 참조하세요.

활동 센서

활동 센서는 센서에 연결된 디바이스의 현재 상태를 결정합니다. 이 센서는 디바이스를 운반하는 사용자가 실행 중이거나 걷는 시기를 추적하기 위해 피트니스 애플리케이션에서 자주 사용됩니다. 이 센서 API에서 검색할 수 있는 가능한 활동 목록은 ActivityType을 참조하세요.

구현 예시는 활동 센서 샘플을 참조하세요.

Altimeter

Altimeter 센서는 센서의 고도를 나타내는 값을 반환합니다. 이를 통해 해수면에서 미터 측면의 고도의 변화를 추적할 수 있습니다. 이를 사용할 수 있는 앱의 한 가지 예시는 실행 중의 상승 변화를 추적하여 소모된 칼로리를 계산하는 러닝 앱입니다. 이 경우 이 센서 데이터를 활동 센서와 결합하여 보다 정확한 추적 정보를 제공할 수 있습니다.

구현 예시는 고도계 샘플을 참조하세요.

Barometer

기압계 센서를 사용하면 애플리케이션에서 기압계 판독값을 가져올 수 있습니다. 날씨 애플리케이션은 이 정보를 현재의 대기 압력을 제공하기 위해 사용할 수 있습니다. 이는 보다 자세한 정보를 제공하고 잠재적인 날씨 변화를 예측하는 데 사용될 수 있습니다.

구현 예시는 기압계 샘플을 참조하세요.

나침반

나침반 센서는 지구의 수평 평면을 기반으로 자기 북쪽에 대한 2D heading을 반환합니다. 나침반 센서는 특정 디바이스 방향을 결정하는 데나 3D 공간에서 아무것도 나타내는 데 사용하면 안됩니다. 지리적 특성으로 인해 heading이 자연스럽게 감소할 수 있으므로 일부 시스템은 HeadingMagneticNorthHeadingTrueNorth를 모두 지원합니다. 앱이 어떤 것을 선호하는지 생각해 봐야 하지만 모든 시스템이 진정한 북쪽 값을 보고하는 것은 아닙니다. Gyrometer 및 자력계(자기 강도 크기를 측정하는 장치) 센서는 데이터를 결합하여 나침반 heading을 생성하며, 이는 데이터를 안정화시키는 순효과를 갖습니다(자기장 강도는 전기 시스템 구성 요소로 인해 매우 불안정함).

자기 북극에 관한 나침반 판독값

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

구현 예시는 나침반 샘플을 참조하세요.

Gyrometer

Gyrometer 센서는 X, Y 및 Z축을 따라 각 속도를 측정합니다. 이는 디바이스 방향에 신경 쓰지 않고 다양한 속도로 회전하는 디바이스에 관심이 있는 간단한 동작 기반 앱에서 매우 유용합니다. Gyrometer는 데이터의 노이즈 또는 하나 이상의 축을 따라 일정한 바이어스로 인해 고통을 겪을 수 있습니다. 가속도계를 쿼리하여 Gyrometer가 바이어스로 인해 고통을 겪는지 확인하기 위해 디바이스가 이동 중인지 확인한 다음 앱에서 그에 따른 보정을 해야 합니다.

피치, 롤 및 요가 있는 자이로미터

Gyrometer 센서를 사용할 수 있는 앱의 예시로는 장치의 빠른 회전 저크에 따라 룰렛 휠을 회전하는 게임이 있습니다.

구현 예시는 회전계 샘플을 참조하세요.

Inclinometer

경사계 센서는 디바이스의 요, 피치 및 롤 값을 지정하며 디바이스가 공간에 배치되는 방식에 관심이 있는 앱에서 가장 잘 작동합니다. 피치 및 롤은 가속도계의 중력 벡터를 사용하고 gyrometer의 데이터를 통합하여 파생됩니다. Yaw는 자력계 및 자이로미터(나침반 heading과 유사) 데이터에서 설정됩니다. 경사계는 고급 방향 데이터를 쉽게 소화하고 이해할 수 있는 방식으로 제공합니다. 디바이스 방향이 필요하지만 센서 데이터를 조작할 필요가 없는 경우 경사계를 사용합니다.

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

디바이스의 방향과 일치하도록 보기를 변경하는 앱은 경사계 센서를 사용할 수 있습니다. 또한 장치의 요, 피치 및 롤과 일치하는 비행기를 표시하는 앱도 경사계 판독값을 사용합니다.

구현 예시는 경사계 샘플 https://github.com/Microsoft/Windows-universal-samples/tree/main/Samples/Inclinometer을(를) 참조하세요.

광원 센서

광원 센서는 센서를 둘러싼 주변 광원을 판단할 수 있습니다. 광원 센서는 앱에서 디바이스를 둘러싼 조명 설정이 변경된 시기를 확인할 수 있습니다. 예를 들어 슬레이트 장치가 있는 사용자는 화창한 날에 실내에서 실외로 걸어갈 수 있습니다. 스마트 애플리케이션은 이 값을 사용하여 렌더링되는 배경과 글꼴 간의 대비를 높일 수 있습니다. 이렇게 하면 콘텐츠를 더 밝은 야외 환경에서 계속 읽을 수 있습니다.

구현 예시는 광원 센서 샘플을 참조하세요.

방향 센서

디바이스 방향은 쿼터니언 및 회전 매트릭스를 통해 표현됩니다. OrientationSensor는 절대적인 heading과 관련하여 장치가 공간에 배치되는 방식을 결정할 때 높은 수준의 정밀도를 제공합니다. OrientationSensor 데이터는 가속도계, 회전계 및 자력계에서 파생됩니다. 따라서 경사계 및 나침반 센서는 모두 쿼터니언 값에서 파생될 수 있습니다. 쿼터니언 및 회전 행렬은 고급 수학 조작에 잘 어울리며 그래픽 프로그래밍에 자주 사용됩니다. 복잡한 조작을 사용하는 앱은 많은 변환이 쿼터니언 및 회전 행렬을 기반으로 하기 때문에 방향 센서를 선호해야 합니다.

방향 센서 데이터

방향 센서는 디바이스 뒷면이 가리키는 방향에 따라 주변에 오버레이를 그리는 고급 증강 현실 앱에서 자주 사용됩니다.

구현 예시는 방향 센서 샘플을 참조하세요.

만보계

만보계 센서는 연결된 디바이스를 운반하는 사용자가 수행한 단계 수를 추적합니다. 만보계 센서는 지정된 기간 동안의 단계 수를 추적하도록 구성됩니다. 여러 피트니스 애플케이션은 사용자가 설정하고 다양한 목표를 달성하는 데 도움을 주기 위해 수행된 단계의 수를 추적하고자 합니다. 이 정보를 수집하고 저장하여 시간에 따른 진행률을 표시할 수 있습니다.

구현 예시는 만보계 샘플을 참조하세요.

근접 센서

근접 센서를 사용하여 센서에서 개체를 감지하는지 여부를 나타낼 수 있습니다. 근접 센서는 개체가 디바이스 범위 내에 있는지 여부를 확인하는 것 외에도 감지된 개체와의 거리를 확인할 수 있습니다. 이를 사용할 수 있는 한 가지 예시는 사용자가 지정된 범위 내에 있을 때 절전 모드에서 발생하려는 애플리케이션입니다. 근접 센서가 개체를 감지한 다음 더 활성 상태가 될 때까지 디바이스가 저전력 절전 상태일 수 있습니다.

구현 예시는 근접 센서 샘플을 참조하세요.

단순 방향

SimpleOrientationSensor는 지정된 디바이스의 현재 사분면 방향을 감지하거나 페이스업 또는 페이스다운입니다. 6가지 가능한 SimpleOrientation 상태(NotRotated, Rotated90, Rotated180, Rotated270, FaceUpFaceDown)가 있습니다.

지면에 병렬 또는 수직으로 유지되는 디바이스에 따라 디스플레이를 변경하는 reader 앱은 SimpleOrientationSensor의 값을 사용하여 디바이스를 보유하는 방법을 결정합니다.

구현 예시는 단순 방향 센서 샘플을 참조하세요.