앱의 전력 소비 최적화

이 문서에서는 Navigation SDK를 사용하여 빌드하는 모바일 내비게이션 앱에서 전력 소모량을 최적화하는 방법에 관한 권장사항을 설명합니다. 동시에 이러한 관행을 사용할 때 고려해야 할 장단점을 설명합니다. 특히 이 문서에서는 다음 내용을 다룹니다.

  • 높은 전력 소비 소스(가장 높은 순에서 낮은 순으로)
  • 전력 소비를 최적화하는 전략(프레임 속도부터 시작됨)을 중요도 순으로 설명합니다.
  • 앱 사용자에게 탐색 중에 기기 사용을 관리하는 방법을 안내하는 최종 사용자 전략입니다.

내비게이션 앱을 최적화해야 하는 이유

상황에 따라 앱 사용자가 탐색 안내를 장시간 실행할 수도 있습니다. 예를 들어 배송 기사와 배달원은 오랜 시간 근무하여 낯선 지역에서 과제를 완료할 수 있습니다. 이러한 경우 인앱 세부 경로 안내를 많이 사용합니다. 이로 인해 다음과 같은 일반적인 문제가 발생합니다.

  • 배터리 소모 및 충전기 사용 가능 여부 탐색을 너무 많이 사용하면 기기 배터리가 예상보다 빨리 소모될 수 있습니다. 많은 사용자가 차량에서 기기를 충전하여 이 문제를 해결할 수 있지만 오토바이 운전자는 그렇게 할 수 없습니다.
  • 열로 인한 기기 제한. 기기를 계속 충전하는 사용자도 문제가 발생할 수 있습니다. 장시간에 걸쳐 전력을 많이 소모하면 기기가 과열되어 열 조절 및 그에 따른 성능 손실이 발생할 수 있습니다.

세부 경로 안내 내비게이션 앱은 화면, GPS, 휴대폰 기지국과의 무선 통신과 같이 전력 소모가 많은 기능을 사용하므로 모바일 앱의 전력 사용량을 최적화하는 것이 가장 좋습니다. 또한 성능과 전력 소비 최적화 사이에서 적절한 절충안을 선택할 수 있도록 타겟층의 전력 사용량 요구사항을 고려해야 합니다.

무엇이 전력을 가장 많이 소모하나요?

이 섹션에서는 높은 전력 소비와 관련된 인앱 활동을 다음 두 가지 카테고리로 나눕니다.

  • 화면 렌더링
  • 위치 업데이트

화면 렌더링

일반적으로 화면 렌더링은 모바일 내비게이션 앱에서 가장 많은 전력을 소비합니다. 기기는 지도 및 기타 UI 요소를 화면에 그릴 때마다 GPU 및 CPU 처리를 사용합니다. 마찬가지로 사용자가 화면을 장시간 켜두면 전력이 더 많이 소모됩니다.

특히 앱을 몇 시간 동안 계속 사용하는 경우, 눈에 보이는 지도를 사용하여 경로를 탐색하는 운전자나 탑승자에게서 어느 정도는 높은 전력 소비가 발생할 수 있습니다. 이 시나리오에서는 지도가 실시간으로 업데이트되기 때문에 앱은 화면에서 더 높은 렌더링 속도도 실행합니다. 때에 따라, 특히 사용자가 멈추지 않고 특정 위치에서 특정 위치로 운전할 때 화면이 거의 지속적으로 다시 그려질 수 있습니다.

위치 업데이트

화면 렌더링 외에도 다른 두 탐색 활동은 기기 전원을 소비합니다.

  • 무선 기지국 및 GPS 사용량
  • 도착예정시간을 제공하거나 Fleet 내 차량의 위치를 보고하는 등의 위치 업데이트 및 공유

GPS 및 휴대폰 무선 통신은 모두 전력을 많이 소모하는 시작 작업에 의존합니다. GPS는 위성을 찾아야 하고 무선 라디오는 기지국과 협상하여 연결을 설정해야 합니다. 따라서 시작 비용을 최소화하기 위해 무선 라디오가 20~30초 동안 활성 상태로 유지되더라도 기본적으로 탐색 중에 계속 실행됩니다. 운영체제는 앱에서 쉽게 구성할 수 없는 이러한 설정을 제어합니다.

위치 업데이트의 경우 예측할 수 없는 요인에 따라 전력 사용량이 달라집니다. 예를 들어 기기는 기지국 전환을 피하기 위해 탐색을 계속하는 데 필요한 최소 신호를 사용하므로 기기와 이동통신망 기지국 간의 거리는 전력 사용량을 결정합니다. 따라서 연결 상태가 좋지 않은 지역을 탐색하는 기기는 기본 정거장에 가까운 기기보다 더 많은 전력을 사용합니다. 또한 일부 앱은 중앙 기기 관리 서비스와 위치 업데이트를 공유할 수 있으므로 이를 위해서는 서버와 통신해야 합니다.

앱의 전력 사용량 최적화

내비게이션 앱의 전력 사용량을 최적화하는 문제는 이러한 앱이 전력을 많이 소모하는 리소스에 크게 의존한다는 점입니다. 따라서 화면 사용 제한과 같은 장단점을 겪지 않고 영향을 완화할 수 있는 옵션이 제한됩니다. 이 섹션에서는 앱을 최적화할 때 취할 수 있는 접근 방식을 가장 큰 영향을 미치는 방법부터 가장 적은 접근 방식 순으로 설명합니다.

프레임 속도 변경

화면은 표시되는 내용을 프레임 속도라는 주파수로 업데이트합니다. 프레임 속도는 일반적으로 초당 프레임 수 (FPS) 단위로 측정됩니다. 화면 렌더링은 CPU 또는 GPU를 많이 사용하므로 프레임 속도를 줄여 전력 소비를 절약할 수 있습니다.

프레임 속도를 줄일 경우 특히 지도가 자주 업데이트되는 경우 화면 렌더링이 덜 매끄럽게 표시될 수 있다는 단점이 있습니다. 이러한 현상은 세부정보를 표시하기 위해 지도를 확대하거나, 사용자가 빠른 속도로 이동 중이거나, 속도나 방향을 큰 폭으로 변경할 때 가장 두드러질 수 있습니다.

프레임 속도 수정에 관한 자세한 내용은 Android 미디어 개발자 센터 개발자 문서의 프레임 속도 섹션을 참고하세요.

최종 사용자가 기기 화면 밝기를 설정하는 방법이나 화면을 켜진 상태로 유지하는 시간을 제어할 수는 없지만 지도 없이 탐색 안내 옵션을 제공할 수는 있습니다. 이렇게 하면 최종 사용자가 전력을 절약하기 위해 해당 옵션을 선택할 수 있습니다. 예를 들어 운전자가 동일한 지역에서 정기적으로 근무하는 경우 지도 기반 안내가 더 자주 필요하지 않을 수 있습니다. 지도 없이 내비게이션을 사용 설정하려면 Navigation SDK에서 목적지를 설정하고 안내를 시작하되 지도는 표시하지 않습니다.

탐색 UI를 숨기려면 NavigationView 또는 SupportNavigationFragment를 추가하지 마세요. 이미 추가했다면 이를 추가하는 코드를 삭제합니다. 다음 코드는 Navigation SDK Android 데모 앱에서 수정되었으며 주석을 사용하여 탐색 UI를 추가하는 코드를 삭제하는 방법을 보여줍니다.

//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment)   getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

Navigation SDK는 도로 스냅 위치, 도착예정시간, 남은 여정 거리를 계속 업데이트하며 운전자가 진행함에 따라 앱은 여전히 SDK에서 발생한 모든 이벤트를 구독할 수 있습니다. 이는 모든 사용 사례에 적합한 것은 아니며, 운전자가 지도를 보고 시각적 안내를 따라야 하는 경우에는 좋은 조언이 아닙니다. 다음 스크린샷은 탐색이 진행되는 동안 지도 뷰 전환을 나란히 비교한 것입니다.

지도뷰가 표시된 상태에서 실행되는 데모 앱
그림 1. Data Back(데이터 뒤로) 데모를 보여주는 Navigation SDK iOS 데모 앱
지도뷰가 표시되지 않은 상태에서 실행 중인 데모 앱
그림 2.지도뷰가 표시되지 않은 상태에서 실행되는 데모 앱 남은 시간과 거리뿐만 아니라 도로에 맞춰진 위치도 계속 업데이트된다는 점에 유의하세요.

어두운 지도 스타일 사용

화면에 지도를 렌더링하는 데 필요한 에너지의 양을 줄이려면 어두운 테마를 사용하도록 지도 스타일을 지정하는 것이 좋습니다.

Navigation SDK는 앱에서 탐색이 아닌 모든 지도 뷰의 스타일을 지정하는 옵션이 포함된 Android용 Google Maps SDK를 사용하여 지도를 렌더링합니다. 탐색 뷰는 강제 어두운 모드도 지원합니다. 이는 화면 유형의 차이로 인해 모든 기기에 동일한 방식으로 영향을 미치지 않을 수 있지만 경우에 따라 잠재적인 전력을 절약할 수 있습니다. 최근 연구에 따르면 일부 화면에서 어두운 모드로 절약되는 전력량은 화면의 밝기에 따라 달라집니다. 예를 들어 어두운 모드는 밝기가 이미 최대의 30~50% 로 조정된 화면보다 최대 밝기로 설정된 화면에서 더 많은 전원을 절약합니다. 앱에서 어두운 모드를 사용할 때는 절전 모드가 최종 사용자가 화면 밝기를 설정하는 방식에 따라 달라지므로 이 점을 고려해야 합니다.

탐색 UI 수정에 관한 자세한 내용은 탐색 UI 수정을 참고하세요.

어두운 지도 스타일이 있는 iPhone 15 Pro에서 실행되는 Navigation SDK의 스크린샷
그림 3. 어두운 지도 스타일로 구성된 Navigation SDK

지도의 어두운 스타일을 만들려면 선택한 어두운 지도 스타일을 나타내는 JSON 스타일과 함께 MapStyleOptions 객체를 사용합니다. 기존 JSON 스타일은 https://mapstyle.withgoogle.com/에서 기존 스타일 편집기를 사용하여 만들 수 있습니다.

GPS 위치 업데이트 빈도 변경

기기에서 전송된 위치 업데이트의 전력 사용량을 고려할 때는 전송 시 전송되는 데이터의 양보다 위치 업데이트 빈도에 더 중점을 두세요.

이는 Navigation SDK에서 직접 제어할 수 있는 것은 아니지만, Android 앱에서 위치를 독립적으로 요청하는 경우 Android 개발자 문서의 배터리 위치 최적화 도움말의 조언을 고려해야 합니다. GPS가 아닌 위치 소스 (모바일 데이터 및 Wi-Fi)를 사용할 때도 동일한 권장사항이 적용됩니다.

사용자 안내

앱 사용자는 전력 소모량을 최적화하는 방법을 알고 싶어 할 수 있습니다. 앱의 전력 소모를 줄일 수 있도록 사용자에게 다음과 같이 안내하세요.

  • 휴대전화 잠금
  • 내비게이션 앱을 백그라운드에 배치
  • 가능한 경우 지도 없이 내비게이션을 사용합니다.
  • OLED 및 AMOLED 화면에 어두운 모드를 사용하거나 밝기 자동 조절을 사용 설정하여 화면 밝기를 줄입니다.
  • 기기를 서늘하게 유지
  • 가능한 경우 차량 내 Wi-Fi에 연결합니다.
Android의 배터리 수명 연장에 관한 최종 사용자 도움말은 Android 기기 배터리 수명 최대한 늘리기를 참고하세요. 이 도움말에는 이 가이드의 앱의 전력 사용량 최적화에 설명된 대로 내비게이션 앱의 효과를 악화시킬 수 있는 작업이 포함되어 있습니다.

전력 소모량 측정

전문가 수준의 도구를 사용하여 전력 소모량을 측정할 수 있지만 이를 구하기 어렵거나 비용이 많이 드는 경우가 많습니다. Android 스튜디오의 전력 프로파일러XCode Preparer의 배터리 사용량 창과 같은 앱과 IDE 프로파일링 도구는 전력 소모량을 측정하지만 백그라운드 프로세스의 효과를 제거하거나 측정할 성능 기준을 설정하기 어려울 수 있습니다. 경우에 따라 기기 제한으로 인해 필요한 데이터에 액세스하지 못할 수 있습니다.

특수 용도의 전력 모니터링 하드웨어를 사용하고 배터리 연결 구성을 수정할 수 있으며 이를 지원하는 상용 제품과 서비스가 있습니다. 이러한 방식으로 기기를 수정하면 기기의 보증이 무효화될 수 있습니다.