시계 화면 최적화

Wear OS 시계 화면은 지속적으로 실행되므로 전력을 효율적으로 사용해야 합니다.

시계 화면의 성능을 최대한 최적화합니다. 이 페이지에서는 전반적인 시계 화면 최적화 권장사항과 애니메이션 및 이미지를 대상으로 하는 권장사항을 제공합니다.

기본 최적화

이 섹션에는 전반적인 시계 화면의 효율성을 개선하기 위한 권장사항이 포함되어 있습니다.

시계 화면 색상 및 밝기

시계 화면에 어두운 색상을 사용하면 사용자 시계의 전력이 적게 소모됩니다. 시계 화면의 배터리 사용을 최적화하도록 시계 화면 배경을 설정하기 위한 권장사항은 다음과 같습니다.

  • 색상: 가능한 경우 검은색 배경을 사용합니다.
  • 밝기: 검은색 배경을 사용할 수 없으면 색조, 채도, 값(HSV) 또는 색조, 채도, 밝기(HSB) 스케일에서 배경 색상의 밝기를 25% 이하로 유지합니다. 예를 들어 Color 클래스를 사용하여 HSV 스케일로 정의된 배경 색상을 설정한다면 밝기를 제어하는 값 설정에 25 이하를 사용합니다.

휴대전화와의 상호작용을 위해 동적 기능 사용

시계 화면으로 인해 휴대전화에서 작업을 실행해야 할 경우 시계 화면이 활성 상태일 때만 코드를 실행합니다. 해당하는 시계 화면이 활성 상태임을 휴대전화의 앱에 알리려면 CapabilityClient API를 사용하는 것이 좋습니다.

전력 소모 모니터링

Wear OS 호환 앱을 사용하면 개발자와 사용자가 웨어러블 기기의 여러 프로세스에서 배터리를 얼마나 소모하는지 확인할 수 있습니다. 이를 확인하려면 설정 > 배터리 확인으로 이동합니다.

암호화 인식 시계 화면 등록

Android 7.0 이상은 파일 기반 암호화를 지원하며, 부팅 시 사용자가 복호화 비밀번호를 제공하기 전에 암호화 인식 애플리케이션을 실행할 수 있습니다. 이렇게 하면 부팅 애니메이션에서 시계 화면으로 전환하는 데 걸리는 시간을 최대 30초 단축할 수 있습니다.

부팅 속도를 높이려면 시계 화면 매니페스트에 android:directBootAware="true"를 추가합니다.

참고: 사용자 인증 정보로 암호화된 저장소를 사용하지 않는 시계 화면에서 이 기능을 사용하세요.

애니메이션 권장사항

이 섹션의 권장사항을 따라 애니메이션과 관련된 전력 소모를 줄이세요.

애니메이션의 프레임 속도 줄이기

애니메이션은 종종 계산 비용이 많이 들고 전력 소모가 큽니다. 대부분의 애니메이션은 초당 30프레임에서 자연스럽게 실행되므로 더 빠른 프레임 속도로 애니메이션을 실행하지 마세요. 대신 동적 프레임 속도를 사용할 수 있습니다. 자세한 내용은 캔버스 시계 화면 예를 참고하세요.

애니메이션 사이에 CPU 절전 모드 허용

배터리 수명을 최대화하려면 애니메이션 사용을 줄이세요. 깜박이는 콜론조차도 깜박일 때마다 배터리 전력을 사용합니다.

애니메이션 실행 및 시계 화면 콘텐츠의 소규모 변경 시 CPU가 절전 모드 상태에서 해제됩니다. 예를 들어 대화형 모드에서 1초마다 짧은 애니메이션 버스트를 사용하고 다음 초까지 CPU 절전 모드를 허용하는 등의 방식으로 애니메이션 사이에 CPU 절전 모드를 허용합니다. 짧게라도 CPU 절전 모드를 종종 허용하면 전력 소모를 크게 줄일 수 있습니다.

이미지 권장사항

이 섹션의 권장사항을 따라 이미지와 관련된 전력 소모를 줄이세요.

비트맵 애셋의 크기 줄이기

대부분의 시계 화면은 배경 이미지와 배경 이미지 위에서 변형되고 오버레이되는 그래픽 애셋(예: 시간이 지나면서 움직이는 시곗바늘 및 기타 요소)으로 구성됩니다. 이러한 그래픽 애셋이 클수록 변형을 위한 계산 비용이 더 많이 듭니다. 시계 화면 그리기에 설명된 것처럼 일반적으로 이러한 그래픽 요소는 시스템에서 시계 화면을 다시 그릴 때마다 Render.CanvasRenderer.render() 메서드 내에서 회전(때로는 크기 조정)됩니다.

그림 1. 시곗바늘을 잘라 여분의 픽셀 삭제

비트맵 애셋의 크기를 줄이면 애니메이션 성능이 향상되고 전력이 절약됩니다. 시계 화면의 성능을 개선하려면 다음 도움말을 따르세요.

  • 필요 이상으로 큰 그래픽 요소를 사용하지 않습니다.
  • 가장자리 주변에 있는 여분의 투명 픽셀을 삭제합니다.

예를 들어 그림 1에서 왼쪽에 있는 시곗바늘 이미지의 크기는 오른쪽에 있는 그림과 같이 여분의 투명 픽셀을 삭제하여 97%까지 줄일 수 있습니다.

비트맵 애셋 결합

함께 자주 그려지는 비트맵이 있다면 이를 단일 그래픽 애셋으로 결합하는 것이 좋습니다. 예를 들어 대화형 모드에서 배경 이미지를 눈금과 결합하면 시스템이 시계 화면을 다시 그릴 때마다 두 개의 전체 화면 비트맵을 그리지 않아도 됩니다.

크기 조정된 비트맵을 그릴 때 앤티앨리어싱 사용 중지

Canvas.drawBitmap() 메서드를 사용하여 Canvas 객체에서 크기 조정된 비트맵을 그릴 때 Paint 인스턴스를 제공하여 여러 옵션을 구성할 수 있습니다. 성능을 높이려면 setAntiAlias() 메서드를 사용하여 앤티앨리어싱을 중지합니다. 이 옵션은 비트맵에 아무런 영향도 주지 않기 때문입니다.

그림 2. 비트맵 필터링의 중지(왼쪽) 및 사용 설정(오른쪽) 예

비트맵 필터링 사용

다른 요소 위에 그리는 비트맵 애셋의 경우 setFilterBitmap() 메서드를 사용하여 동일한 Paint 인스턴스에서 비트맵 필터링을 사용 설정합니다. 그림 2는 비트맵 필터링을 사용한 경우와 사용하지 않은 경우의 확대된 시곗바늘 모습을 보여줍니다.

참고: 대기 모드가 활성화되면 비트맵 필터링을 중지하세요. 낮은 비트 대기 모드에서 시스템은 비트맵 필터링이 성공적으로 처리되도록 이미지의 색상을 안정적으로 렌더링하지 않습니다.

비용이 많이 드는 작업을 그리기 메서드 외부로 이동

시스템은 시계 화면을 다시 그릴 때마다 Render.CanvasRenderer.render() 메서드를 호출합니다. 성능을 높이려면 시계 화면 업데이트에 반드시 필요한 작업만 이 메서드 내에 포함하세요.

가능하면 Render.CanvasRenderer.render() 메서드 내에서 다음 작업을 실행하지 마세요.

  • 이미지 및 기타 리소스 로드
  • 이미지 크기 조정
  • 객체 할당
  • 결과가 프레임 간에 변경되지 않는 계산

시계 화면의 성능을 분석하려면 CPU 프로파일러를 사용합니다. 특히 Render.CanvasRenderer.render() 구현의 실행 시간이 호출 전체에서 짧고 일관성이 있어야 합니다. 자세한 내용은 CPU 프로파일러를 사용하여 CPU 활동 검사를 참고하세요.

시계 화면 샘플 앱에서는 시계 화면 구성을 위한 권장사항을 보여줍니다.