시간 개요

이 페이지에서는 Android에서 시간 및 시간대 감지가 작동하는 방식을 설명합니다. 여기에는 Android가 자동으로 시간과 시간대를 감지하는 방법, 기기 제조업체를 위한 구성 옵션, 테스트 정보가 포함됩니다.

시간 및 시간대 개요

상태 표시줄과 같은 위치에 표시할 사용자의 현지 시간을 결정하기 위해 Android는 두 개의 관련 있지만 독립적인 상태를 추적합니다.

  • 현재 Unix epoch 시간
  • 현재 시간대

현재 Unix epoch 시간과 현재 시간대는 장치 전체의 상태이며, 이는 장치의 모든 사용자가 공유함을 의미합니다.

현재 Unix epoch 시간은 고정된 값이 아닙니다. 시간 경과를 반영하여 자동으로 업데이트됩니다. 정상적인 시간 경과 외에 장치의 현재 Unix epoch 시간은 예를 들어 장치의 전원이 꺼진 후와 같이 올바르지 않은 것으로 밝혀지면 조정됩니다.

현재 시간대는 현재 Unix epoch 시간을 현지 시간으로 변환하기 위해 수행할 조정을 결정합니다. 예를 들어, 로스앤젤레스의 여름 동안 장치는 현재 Unix epoch 시간에서 7시간을 뺍니다. 겨울에는 8시간을 뺍니다.

이러한 현지 시간 계산을 지원하기 위해 모든 Android 기기에는 모든 글로벌 표준 시간대 규칙의 데이터베이스가 있습니다. 시간대 규칙에 대한 자세한 내용은 시간대 규칙 을 참조하십시오.

사용자가 다른 시간대를 사용하는 새 위치로 여행하는 경우 현재 Unix epoch 시간을 조정할 필요가 없지만 사용자는 일반적으로 이전 위치의 시간이 아닌 현지 시간을 보고 싶어합니다. 현재 시간대를 변경하면 현재 Unix epoch 시간에 올바른 오프셋이 적용되어 새 위치에 대한 올바른 현지 시간이 표시됩니다.

AOSP를 사용하면 다음 메커니즘을 통해 사용자가 시간과 시간대를 자동으로 설정할지 여부를 독립적으로 제어할 수 있습니다.

  • 자동 시간 감지: 장치의 현재 Unix epoch 시간이 올바른지 확인합니다.
  • 자동 시간대 감지: 장치의 현재 시간대가 올바른지 확인합니다.

자동 시간 감지

이 섹션에서는 자동 시간 감지, 사용자 제어, 구성 옵션 및 테스트 세부 정보를 관리하는 time_detector 서비스에 대한 개요를 제공합니다.

time_detector 서비스

Android 10 이상을 실행하는 기기에 있는 time_detector 서비스는 자동 시간 감지를 관리합니다. 자동 시간 감지가 활성화된 경우 필요에 따라 장치의 현재 Unix epoch 시간을 조정합니다.

time_detector 서비스는 항상 두 가지 상태인 불확실 또는 확실 중 하나에 있습니다. 서비스의 확실하거나 불확실한 상태는 다양한 소스에서 수신하는 시간 제안 에 의해 결정됩니다.

time_detector 서비스가 확실한 경우, 즉 Unix epoch 시간 정보가 포함된 제안을 수신한 경우 시간 제안이 현재 Unix epoch 시간과 다른 경우 현재 Unix epoch 시간을 무시합니다.

time_detector 가 불확실하면 현재 시간을 무시하지 않습니다. 불확실한 상태는 일반적으로 time_detector 서비스가 시간 제안을 받지 못했음을 의미합니다. time_detector 서비스는 수신된 제안이 너무 오래되어 사용할 수 없는 경우에도 불확실해집니다. 오래된 Unix epoch 시간 제안을 사용한 조정은 장치의 경과된 실시간 시계에 의존하기 때문에 제안 기간이 고려되며, 이는 장기간에 걸쳐 부정확하다고 가정됩니다.

현재 Unix epoch 시간을 자동으로 설정하기 위해 장치에는 사용할 수 있는 다양한 소스가 있습니다. 이 문서에서는 이를 출처 라고 합니다. time_detector 서비스는 제안 시퀀스를 출처에 따라 구별되는 것으로 처리합니다.

time_detector 서비스는 상태 저장(stateful)입니다. 즉, 각 출처에서 제안한 가장 최근의 기록을 유지합니다. 오리진에 사용 가능한 최신 Unix epoch 시간 정보가 있는 경우 time_detector 에 새로운 제안이 제공됩니다. time_detector 서비스는 새로운 제안과 기존 제안을 재평가하고 제안이 수신되면 기기 상태를 업데이트합니다.

UTC 시간은 국제적으로 합의되어 있지만 Android 기기에서 현재 Unix epoch 시간을 설정하는 것이 항상 간단하지 않은 데에는 여러 가지 이유가 있습니다.

  • Unix epoch 시간은 UTC 시간과 미묘하게 다른 시간 기록 시스템입니다. 둘 사이를 변환하려면 윤초가 발생하는 시기와 윤초가 원점에서 처리되는 방식에 대한 지식이 필요합니다.
  • Origin은 특정 시간 또는 특정 상황에서만 사용할 수 있습니다. 예를 들어 오리진에 네트워크 연결이 필요한 경우 장치가 인터넷에 연결되어 있는 동안에만 사용할 수 있습니다.
  • 출처가 부정확하거나 부정확하거나 오류가 있을 수 있습니다. 예를 들어, 전화 기지국이 "세계 시간"을 올바르게 추적하지 않는 경우 전화 통신 출처가 부정확한 시간 제안을 제공할 수 있습니다.
  • Unix epoch 시간을 구하는 동안 부정확성이 도입될 수 있습니다. 예를 들어, 네트워크 지연, 버퍼링 또는 프로세스 스케줄링으로 인해 Unix epoch 시간이 정확하지 않을 수 있습니다.
  • 제안을 받은 이후 경과된 시간에 대한 제안을 조정하는 데 사용된 참조 시계가 정확하지 않을 수 있습니다.

AOSP에서 기본적으로 사용하도록 구성된 두 가지 기본 시간 감지 출처가 있습니다.

  • 전화 통신: NITZ(네트워크 ID 및 시간대) 전화 통신 신호를 사용합니다.
  • 네트워크: NTP(Network Time Protocol) 시간 서버를 사용합니다.

전화 통신 및 네트워크 출처 모두 항상 사용 가능한 것은 아니지만 외부 네트워크에 대한 연결이 필요합니다.

Android 12부터 Android는 기본적으로 사용하도록 구성되지 않은 다음 출처도 지원합니다.

  • GNSS : GPS 위치 제공자를 사용하여 GNSS 소스에서 시간을 얻습니다.
  • 외부 : 장치 제조업체가 고유한 Unix epoch 시간 소스를 통합할 수 있도록 하는 일반 출처.

시간 설정

사용자는 AOSP 설정 앱의 시스템 > 날짜 및 시간 에서 자동 시간 감지를 활성화할 수 있습니다.

설정에서 자동 시간 감지

그림 1. 설정의 자동 시간 감지.

다음 표에서는 AOSP 설정 앱에서 시간 감지를 위한 사용자 컨트롤을 설명합니다.

*Android 11 이하에서 이 설정은 네트워크 제공 시간 사용 으로 표시됩니다.

AOSP 설정 위치 AOSP 설정 이름 범위 행동
시스템 > 날짜 및 시간 자동으로 시간 설정* 모든 사용자들

토글.

켜져 있으면 장치가 현재 Unix epoch 시간을 감지합니다. 끄면 사용자에게 장치의 시간을 수동으로 설정할 수 있는 컨트롤이 제공됩니다.

사용자가 수동으로 시간을 입력하면 Unix epoch 시간이 아닌 현지 시간을 입력합니다. 현재 Unix epoch 시간은 Unix epoch 시간을 유도하기 위해 현재 시간대를 사용하여 계산됩니다.

구성

장치 제조업체는 사용할 원본 및 신호의 우선 순위를 지정하는 방법과 같은 다양한 방식으로 time_detector 서비스를 구성할 수 있습니다.

원산지 우선순위

Android 12부터 기기 제조업체는 core/res/res/values/config.xml 구성 파일을 변경하여 자동 시간 감지에 포함할 시간 출처와 time_detector 가 이러한 출처를 고려하는 우선 순위를 지정할 수 있습니다.

Android 11 이하를 실행하는 기기의 경우 출처 우선순위가 ["telephony", "network"] 로 하드코딩됩니다. 즉, 전화 제안이 네트워크 제안보다 우선순위가 높습니다.

기본 AOSP 구성은 다음과 같습니다.

<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
     take precedence over lower ones.
     See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
    <item>network</item>
    <item>telephony</item>
</string-array>

Android 12에서 네트워크 및 전화 통신 제안은 기본적으로 사용할 원본으로 구성됩니다. 네트워크 시간 제안은 전화 통신 시간 제안보다 우선합니다. 기기 제조업체는 전화 통신에 더 높은 우선 순위가 부여되는 Android 11 이하의 동작으로 되돌리기 위해 출처의 순서를 변경할 수 있습니다.

기본적으로 가장 높은 우선 순위의 유효한 제안이 장치의 현재 시스템 시계 시간과 몇 초 이내로 일치하는 경우 장치 시간은 변경 되지 않습니다 . 이는 ACTION_TIME_CHANGED 인텐트를 수신 대기하는 설치된 앱에 대한 작업 생성을 방지하기 위한 것입니다.

허용되는 원본 값은 다음과 같습니다.

하한 시간 제한

Android 12에는 time_detector 서비스에서 수신한 시간 제안을 검증하는 데 사용되는 하한 시간 제한이 도입되었습니다. 하한 시간 경계 값은 빌드 타임스탬프에서 설정됩니다. 이는 장치의 시스템 이미지가 빌드되기 전에 유효한 시간 이 될 수 없다는 원칙에 따라 작동합니다. 시간 제안이 하한 시간 제한 이전인 경우 빌드 타임스탬프가 올바른 경우 유효하지 않기 때문에 time_detector 서비스는 제안을 버립니다.

Android 11 이하를 실행하는 기기의 경우 time_detector 서비스는 들어오는 Unix epoch 시간 제안의 유효성을 검사하지 않습니다.

Android는 상한 시간 제한을 적용하지 않습니다.

시간 디버깅 및 테스트

이 섹션에서는 모든 출처에서 공유하는 time_detector 서비스 및 기타 구성 요소의 동작을 디버그하고 테스트하는 방법에 대한 정보를 제공합니다.

time_detector 서비스와 상호 작용

time_detector 서비스의 구성과 time_detector 서비스의 상태를 보려면 다음을 사용하십시오.

adb shell cmd time_detector dump

시간대 감지 디버깅 및 테스트를 위한 추가 명령을 보려면 다음을 사용하십시오.

adb shell cmd time_detector help

도움말 출력은 또한 테스트 또는 프로덕션에서 time_detector 의 동작에 영향을 미치는 데 사용할 수 있는 device_config 서비스 속성을 설명합니다. 자세한 내용 은 device_config 서비스를 사용하여 장치 구성을 참조하십시오.

자동 시간 감지를 검증하려면 테스터는 time_detector 서비스가 사용 중인 출처를 알고 있어야 합니다. 다음은 현재 원본 및 서비스 상태에 대한 정보가 굵게 표시된 adb shell cmd time_zone_detector dump 명령의 출력 예입니다.

$ adb shell cmd time_detector dump

TimeDetectorStrategy:
  mLastAutoSystemClockTimeSet=null
  mEnvironment.isAutoTimeDetectionEnabled()=true
  mEnvironment.elapsedRealtimeMillis()=23717241
  mEnvironment.systemClockMillis()=1626707861336
  mEnvironment.systemClockUpdateThresholdMillis()=2000
  mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
  mEnvironment.autoOriginPriorities()=[network,telephony]
  Time change log:
    ...
  Telephony suggestion history:
    ...
  Network suggestion history:
    ...
  Gnss suggestion history:
    ...
  External suggestion history:
    ...

정보는 다음과 같이 해석될 수 있습니다.

열쇠
mEnvironment.isAutoTimeDetectionEnabled() 자동 시간 감지가 활성화되었는지 여부.
mEnvironment.autoTimeLowerBound() 시간 제안을 검증하는 데 사용되는 현재 하한입니다.
mEnvironment.autoOriginPriorities() 사용 출처 및 우선 순위.

시간 변경 로그는 time_detector 서비스가 장치의 현재 Unix epoch 시간을 변경한 경우를 나타냅니다.

제안 이력 정보는 각 출처에서 어떤 제안을 했는지 나타냅니다.

자동 시간대 감지

이 섹션에서는 자동 시간대 감지, 설정의 사용자 제어, 전화 통신 및 위치 시간대 감지, 테스트 세부 정보를 관리하는 time_zone_detector 서비스에 대한 개요를 제공합니다.

time_zone_detector 서비스

Android 11 이상을 실행하는 기기에 있는 time_zone_detector 서비스는 자동 시간대 감지를 관리합니다. 자동 시간대 감지가 활성화된 경우 필요에 따라 장치의 현재 시간대를 조정합니다.

자동 시간대 감지가 활성화되면 time_zone_detector 는 두 가지 상태 중 하나가 될 수 있습니다: 불확실확실 .

time_zone_detector 서비스가 특정 상태에 있다는 것은 time_zone_detector 서비스가 강력한 시간대 정보를 수신했음을 의미하며, 이로 인해 현재 시간대를 무시할 수 있습니다. 불확실한 경우 정보가 수신되지 않았거나 신뢰도가 낮은 정보만 수신되었음을 의미합니다. 즉, 현재 시간대를 무시하지 않습니다.

time_zone_detector 서비스의 특정 상태에는 time_zone_detector 에 사용할 시간대 정보가 없거나 선택할 수 있는 여러 시간대가 있는 상태가 포함될 수 있습니다. 이러한 상태는 다음과 같습니다.

  • 장치가 국제 해역이나 분쟁 지역과 같이 표준 시간대가 없는 어딘가에 있을 때 표준 시간대가 0인 특정 상태에 들어갑니다. 이 상태는 불확실한 상태와 유사하지만 time_zone_detector 가 시간대를 결정하기 위해 추가 조치를 취할 필요가 없음을 나타냅니다.
  • 모호하거나 경계 조건이 있는 경우 여러 시간대가 있는 특정 상태가 입력됩니다. 이 상태에서 현재 시간대가 time_zone_detector 가 확신하는 시간대 중 하나라면 현재 시간대는 그대로 둡니다. 그렇지 않으면 사용 가능한 시간대 중 하나가 사용됩니다. 이것은 사용자가 이전에 수동으로 시간대를 선택했거나 장치가 경계에 접근할 때 time_zone_detector 에 고정 요소를 제공합니다.

time_zone_detector 서비스의 특정 또는 불확실한 상태는 출처 에서 보낸 시간대 제안 에 의해 결정됩니다.

일반적으로 제안은 time_zone_detector 의 가능한 상태와 밀접하게 일치하는 두 가지 유형( 특정불확실 )으로 제공됩니다. 다음은 제안 유형의 예입니다.

  • 유형 = "불확실", zoneIds = []

    • 원산지는 시간대가 무엇인지 모릅니다.
  • 유형 = "확실한", zoneIds = ["유럽/런던"]

    • 원산지는 지역이 "유럽/런던"임이 확실합니다.
  • 유형 = "확실한", zoneIds = []

    • 출처는 확실하지만 현재 위치와 연결된 구역 ID가 없습니다.
  • 유형 = "확실한", zoneIds = ["미국/덴버", "미국/피닉스"]

    • 출처는 답이 두 지역 중 하나라고 확신하지만 "미국/덴버"와 "미국/불사조" 중 하나를 선택할 수 없습니다.

time_zone_detector 서비스는 제안 시퀀스를 출처에 따라 구별되는 것으로 처리합니다. 출처에 따라 제안에는 출처가 얼마나 확실한지를 나타내는 메타데이터가 포함될 수도 있습니다.

time_zone_detector 서비스는 상태 저장(stateful)입니다. 즉, 각 출처에서 제안한 가장 최근의 기록을 유지합니다. 이전 제안이 더 이상 정확하지 않으면 새 제안이 time_zone_detector 서비스로 전송됩니다. 즉, 원본에 다른 제안이 있거나 표준 시간대를 감지하는 기능이 손실된 경우입니다. time_zone_detector 서비스는 새로운 제안과 기존 제안을 재평가하고 제안이 수신되면 기기 상태를 업데이트합니다.

Android는 시간대 감지를 위해 두 가지 출처를 지원합니다.

  • 전화
  • 위치

time_zone_detector 서비스는 단일 출처만 사용하여 시간대를 결정합니다. 장치에서 위치 원점이 지원되는 경우 사용자가 구성한 Time zone 설정 에 따라 현재 사용할 원점이 결정됩니다. 현재 원점이 시간대가 불확실해지면 time_zone_detector 는 다른 원점으로 전환하지 않습니다. 현재 출처 이외의 출처와 관련된 제안은 time_zone_detector 에 의해 메모리에 보관될 수 있지만 현재 출처가 변경되지 않는 한 사용되지 않습니다. 사용자가 자동 ​​표준 시간대 감지에 대한 설정을 변경하고 현재 원점이 변경되면 새 원점에 대해 사용 가능한 가장 최근 제안이 사용됩니다.

시간대 설정

사용자는 AOSP 설정 앱에서 자동 시간대 감지 설정을 활성화하고 구성할 수 있습니다.

설정에서 자동 시간대 감지

그림 2. 설정의 자동 시간대 감지.

다음 표에서는 AOSP 설정 앱에서 시간대 감지를 위한 사용자 컨트롤을 설명합니다.

*Android 11 이하에서 이 설정은 네트워크 제공 시간대 사용 으로 표시됩니다.

AOSP 설정 위치 AOSP 설정 이름 범위 행동
시스템 > 날짜 및 시간 자동으로 시간대 설정* 모든 사용자들

토글.

켜져 있으면 장치가 현재 시간대를 감지합니다. 끄면 사용자에게 장치의 시간대를 수동으로 설정할 수 있는 컨트롤이 제공됩니다.

시스템 > 날짜 및 시간 위치를 사용하여 시간대 설정 현재 사용자

토글.

Android 12부터 사용 가능합니다. 이 토글은 기기에서 위치 시간대 감지가 지원되는 경우에만 표시됩니다.

위치 위치 사용 현재 사용자

토글.

일반적으로 장치의 위치 사용을 허용하거나 금지합니다. 장치에서 위치 시간대 감지가 지원되는 경우 값이 관련됩니다.

다음은 사용자가 선택한 설정에 따라 시간대 감지를 위한 장치 동작에 대한 개요를 제공합니다.

  • [날짜 및 시간] 시간대 자동 설정: OFF

    • 사용자가 수동으로 시간대를 선택해야 합니다.
  • [날짜 및 시간] 시간대 자동 설정: ON

    • [위치] 사용 위치: OFF

      • 전화 신호는 시간대를 감지하는 데 사용됩니다. (아래 참고 참조.)
    • [위치] 사용위치 : ON

      • [날짜 및 시간] 위치를 사용하여 시간대 설정: ON

        • 위치는 시간대를 감지하는 데 사용됩니다.
      • [날짜 및 시간] 위치를 사용하여 시간대 설정: OFF

        • 전화 신호는 시간대를 감지하는 데 사용됩니다. (아래 참고 참조.)

여러 사용자 장치

관련된 여러 설정이 현재 사용자로 범위가 지정되어 있기 때문에 현재 사용자가 다중 사용자 Android 기기에서 변경되면 기기의 시간대 감지 동작이 변경될 수 있습니다.

위치를 사용하여 시간대 설정 토글은 현재 사용자로 범위가 지정되며 장치 정책에 의해 제한되지 않습니다. 즉, 시간대 자동 설정 토글이 꺼져 있거나 다른 시간 또는 시간대가 제어하는 ​​경우에도 사용자가 항상 값을 변경할 수 있습니다. Device Policy Controller에 의해 제한됩니다.

자동 감지로 전환 및 전환 시 동작

사용자가 시간대 감지를 수동 에서 자동으로 전환하면 time_zone_detector 가 이미 현재 시간대를 확신할 수 있습니다. 그렇다면 사용자가 자동 ​​감지를 활성화함에 따라 time_zone_detector 서비스의 의견과 일치하도록 장치의 시간대가 동시에 변경될 수 있습니다.

마찬가지로, 사용자가 설정을 변경하여 time_zone_detector 서비스의 현재 오리진을 변경하면 time_zone_detector 가 이미 새 오리진에 대한 제안을 받았을 수 있으므로 장치의 시간이 time_zone_detector 서비스의 의견과 즉시 일치하도록 변경될 수 있습니다.

전화 통신 시간대 감지

전화 통신 시간대 감지는 전화 통신 신호를 사용하여 현재 시간대를 결정합니다. 자세한 내용은 전화 통신 시간대 감지 를 참조하십시오.

위치 시간대 감지

위치 시간대 감지는 Android 12 이상에서 사용할 수 있습니다. 장치가 위치를 사용하여 현재 시간대를 결정할 수 있도록 하는 선택적 자동 시간대 감지 기능입니다.

Android 12에 도입된 location_time_zone_manager 서비스는 시스템 서버에서 실행되며 time_zone_detector 서비스에 위치 출처 제안을 제출하는 코드를 포함합니다. 자세한 내용은 위치 시간대 감지 를 참조하십시오.

기능 채택 고려 사항

이 섹션에서는 장치 제조업체가 장치에서 기능을 채택할지 여부를 결정하는 데 도움이 되는 위치 표준 시간대 감지 기능의 측면에 대해 설명합니다.

전화 통신과 위치 감지 비교

다음 표는 표준 시간대 감지에 전화 신호 대신 위치를 사용하는 경우의 장단점을 비교한 것입니다.

전화 통신 감지 위치 감지
단정 국가에 따라 다릅니다.

MCC, NITZ 정확성 및 가용성에 따라 다릅니다.
기능 구성 또는 플러그인 구성 요소에 따라 다릅니다.

정확성은 일반적으로 다음에 따라 다릅니다.
  • 위치 제공자의 정확성 및 규칙성.
  • 시간대 지도 데이터의 품질입니다.
업데이트 가능성 전화 통신 감지는 업데이트 가능한 시간대 데이터 모듈 (com.android.tzdata APEX)에 포함된 파일에 의존합니다. 기능 구성 또는 플러그인 구성 요소에 따라 다릅니다.

업데이트 가능성은 일반적으로 장치가 서버 또는 클라이언트 표준 시간대 맵 데이터를 사용하는지 여부에 따라 다릅니다.

참고: 표준 시간대 지도 데이터는 Android의 TZDB 사본 및 기타 표준 시간대 정보를 업데이트하는 데 사용되는 표준 시간대 데이터 모듈 에 포함되어 있지 않습니다.

장치 제조업체는 표준 시간대 규칙과 표준 시간대 맵 데이터 간의 버전 일관성도 고려해야 합니다.
전력 사용량 없음 또는 낮은 전력 사용량 사용자 위치 설정, 사용 중인 플러그인 및 일반적으로 다른 앱에서 위치를 요청하는 항목에 따라 다릅니다.
유효성 전화 장치만 해당. 일반적으로 작동하는 SIM이 필요합니다. 위치 감지는 사용 가능한 위치 공급자에 따라 다릅니다.
사용자 개인 정보

사용자가 선호하는 시간대는 일반적으로 지리적 위치에 따라 결정됩니다. 위치는 민감한 데이터입니다. 사용자는 시간대 감지의 일부로 공유되는 위치 정보에 대해 우려할 수 있습니다. 표준 시간대 감지와 관련 없이 기기에서 실행되는 모든 앱은 Android 권한 없이 기기의 현재 표준 시간대를 읽을 수 있으며 앱은 이 정보에서 기기 위치에 대한 부정확한 아이디어를 유추할 수 있습니다.

보다 구체적으로, 시간대 감지는 수동 또는 능동 수단을 통해 작동할 수 있습니다.

  • 수동: 장치 환경에 있는 어떤 것이 장치에 해당 환경에서 사용할 시간대를 알려줍니다.
  • 활성: 장치는 자체적으로 시간대를 계산해야 하며 사용자의 개인 정보 설정 및 동의에 따라 장치의 위치를 ​​가져와야 합니다. 그런 다음 외부 서비스와 위치를 공유할 수 있습니다. 사용자 개인 정보 및 동의에 대한 자세한 내용은 아래 토론을 참조하십시오.

전화 통신 출처와 같은 수동 감지는 사용자에게 추가적인 개인 정보 보호 영향이 없습니다.

위치 원점과 같은 능동 감지에는 사용자가 동의하지 않을 수 있는 장치의 위치를 ​​결정하는 작업이 포함되며 시간대 ID를 결정하기 위해 네트워크를 통해 위치가 전송될 수 있습니다.

표준 시간대 감지를 위한 사용자 개인 정보 보호에 대한 Android의 접근 방식은 사용자가 활성화될 것으로 예상되는 출처를 개별적으로 비활성화할 수 있는 기능을 제공합니다. 또한 AOSP 플랫폼 코드는 위치 자체를 직접 처리하지 않습니다. 위치 감지 및 시간대 ID에 대한 매핑 위치는 장치 제조업체가 구성한 플러그인 구성 요소에 맡겨집니다.

사용자 개인 정보 보호 기능에 대한 자세한 내용은 위치 시간대 감지 를 참조하십시오.

시간대 디버깅 및 테스트

이 섹션에서는 모든 출처에서 공유하는 time_zone_detector 서비스 및 기타 구성 요소의 동작을 디버그하고 테스트하는 방법에 대한 정보를 제공합니다.

device_config 서비스를 사용하여 장치 구성

device_config 서비스는 일반적으로 독점(AOSP가 아닌) 코드에 의해 원격 서버에서 가져온 값을 사용하여 수정 가능한 동작을 구성하기 위해 Android에서 사용되는 메커니즘입니다. 테스트를 위해 device_config 값을 사용할 때, 특히 장기 실행 수동 테스트 중에 장치가 플래그를 동기화하여 플래그를 재설정하고 테스트용으로 설정된 값을 지울 수 있습니다.

Android 12 이상에서 플래그 동기화를 일시적으로 방지하려면 다음을 사용하세요.

adb shell cmd device_config set_sync_disabled_for_tests persistent

테스트 후 플래그 동기화를 복원하려면 다음을 사용하십시오.

adb shell cmd device_config set_sync_disabled_for_tests none

플래그 동기화를 복원한 후 장치를 재부팅하십시오.

자세한 내용은 $ adb shell cmd device_config help 사용하십시오.

time_zone_detector 서비스와 상호 작용

time_zone_detector 구성 및 time_zone_detector 서비스 상태를 보려면 다음을 사용하십시오.

adb shell cmd time_zone_detector dump

시간대 감지 디버깅 및 테스트를 위한 추가 명령을 보려면 다음을 사용하십시오.

adb shell cmd time_zone_detector help

도움말 출력은 또한 테스트 또는 프로덕션에서 time_zone_detector 서비스의 동작에 영향을 미치는 데 사용할 수 있는 device_config 서비스 속성을 설명합니다. 자세한 내용 은 device_config 서비스를 사용하여 장치 구성을 참조하십시오.

시간대 감지를 검증하려면 테스터는 time_zone_detector 가 사용 중인 출처를 알고 있어야 합니다. time_zone_detector 의 현재 출처를 이해하고 영향을 미치려면 다음 옵션 중 하나를 사용하세요.

  • 설정 UI를 통해 육안으로 확인하세요. 자세한 내용은 시간대 설정 을 참조하십시오.
  • adb를 통해 명령줄을 사용합니다.

    • time_zone_detector 상태를 덤프하려면 adb shell cmd time_zone_detector dump 를 사용하십시오.
    • 장치 설정을 변경하려면 다른 time_zone_detector 명령을 사용하십시오. 자세한 내용은 adb shell cmd time_zone_detector help 사용하십시오.

다음은 현재 원본 및 서비스 상태에 대한 정보가 굵게 표시된 adb shell cmd time_zone_detector dump 명령의 출력 예입니다.

$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
  mEnvironment.getCurrentUserId()=0
  mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
  [Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
  mEnvironment.isDeviceTimeZoneInitialized()=true
  mEnvironment.getDeviceTimeZone()=Europe/London
  Time zone change log:
  Manual suggestion history:
...
  Geolocation suggestion history:
...
  Telephony suggestion history:
...

정보는 다음과 같이 해석될 수 있습니다.

열쇠
mUserConfigAllowed 사용자가 Device Policy Controller 에서 날짜 및 시간 설정을 제어하지 못하도록 차단하는지 여부입니다.
mTelephonyDetectionSupported 장치에 전화 통신 시간대 감지 기능이 있는지 여부.
mGeoDetectionSupported 장치에 위치 시간대 감지 기능이 있는지 여부. 이것은 구성 하나 이상의 LTZP 존재를 기반으로 한 유효 상태입니다.
mAutoDetectionEnabled 자동 시간대 감지가 활성화되었는지 여부입니다.
mLocationEnabled 마스터 위치 토글.
mGeoDetectionEnabled 원점 스위치: 'false'는 전화 통신 원점을 나타내고 'true'는 위치 원점을 나타냅니다.

제안 기록 정보는 설정(수동)과 전화 및 위치 출처를 통해 제안된 내용을 나타냅니다.