센서

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

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

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

센서 일괄 처리

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

센서 일괄 수집

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

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

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

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

가속도계

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

다음 다이어그램은 다음을 보여 줍니다.

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

가속도계 가속도계 측정

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

구현 예제는 가속도계 사용을 참조하세요.

활동 센서

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

구현 예는 활동 센서 예제를 참조하세요.

고도계

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

예제 구현은 altimeter 샘플 참조하세요.

기압계

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

예제 구현은 barometer 샘플을 참조하세요.

나침반

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

자기 북극을 기준으로 한 나침반 측정값

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

구현 예제는 나침반 사용을 참조하세요.

회전계

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

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

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

예제 구현은 회전계 사용을 참조하세요.

경사 계

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

피치, 롤 및 요 데이터를 제공하는 경사계

디바이스의 방향과 일치하도록 보기를 변경하는 앱은 경사계 센서를 사용할 수 있습니다. 또한 장치의 요, 피치, 롤에 맞춰 항공기를 표시하는 앱도 경사계 측정값을 사용합니다.

구현 예제는 경사계 사용을 참조하세요.

광원 센서

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

구현 예제는 광원 센서 사용을 참조하세요.

방향 센서

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

방향 센서 데이터

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

구현 예제는 방향 센서 사용을 참조하세요.

만보계

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

구현 예는 pedometer 샘플을 참조하세요.

근접 센서

Proximity 센서를 사용하여 개체가 센서에서 감지되는지 여부를 나타낼 수 있습니다. 개체가 디바이스 범위 내에 있는지 여부를 확인하는 것 외에도 근접 센서는 감지된 개체와의 거리를 확인할 수 있습니다. 이 기능의 한 가지 활용 예는 사용자가 지정된 범위 안으로 들어오면 절전 모드에서 깨어나도록 하는 애플리케이션입니다. 장치는 근접 센서가 물체를 감지할 때까지 저전력 절전 상태에 있다가, 감지하면 보다 활성화된 상태로 전환될 수 있습니다.

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

간단한 방향

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

지면과 평행하거나 수직인 상태로 디바이스를 들고 있을 때 표시 방식을 변경하는 리더 앱은 디바이스가 어떻게 들려 있는지를 확인하기 위해 SimpleOrientationSensor의 값을 사용합니다.

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