모바일 앱에서 디바이스의 배터리 잔량 표시하기
PC나 콘솔 같은 디바이스에서 동작하는 앱이라면 상관없는 문제이지만 모바일 같은 휴대기기에서 동작하는 앱이라면 현재 앱이 동작하고 있는 디바이스의 배터리 잔량에 대해서 알아야 하거나 확인해야 할 수도 있다. 사용자가 일일이 화면 상단을 드래그나 터치해서 상태바(Status bar)를 꺼내지 않고도 배터리 잔량을 할 수 있게 하는 방식으로 말이다.
유니티는 모바일을 타깃으로 하는 게임이나 앱들을 굉장히 폭넓게 지원하기 때문에 이와 관련된 기능 역시 제공하고 있다.
SystemInfo.batteryLevel;
SystemInfo.batteryStatus;
유니티에서 배터리의 상태와 관련된 정보는 SystemInfo 클래스의 정적 프로퍼티를 통해서 가져올 수 있다.
첫 번째로 batteryLevel은 현재 디바이스의 배터리 충전량으로 float 변수이며, 0-1사이의 값을 가지며, 이 프로퍼티를 호출한 디바이스가 배터리를 사용하지 않거나 batteryLevel을 지원하지 않는 디바이스라면 -1을 반환한다.
두 번째 프로퍼티는 batteryStatus로 현재 배터리의 상태를 가져올 수 있다. 이 프로퍼티는 BatteryStatus 타입의 열거형이며 열거형의 종류와 내용은 다음과 같다.
BatteryStatus.Unknown; // 충전 상태를 알 수 없음. 배터리 상태를 지원하지 않는 플랫폼일 때 반환되는 값.
BatteryStatus.Discharging; // 충전 케이블이 연결되지 않았고, 충전도 되지 않는 상태.
BatteryStatus.NotCharging; // 충전 케이블은 연결되어 있지만, 충전은 되지 않는 상태.
BatteryStatus.Charging; // 충전 케이블이 연결되어 있고, 충전되고 있는 상태.
BatteryStatus.Full; // 충전 케이블이 연결되어 있고, 배터리가 가득 찬 상태.
간단한 사용 예시
using UnityEngine;
using UnityEngine.UI;
public class BatteryUI : MonoBehaviour
{
Sprite chargeStateSprite; // 배터리 충전중 표시 스프라이트
Sprite fewStateSprite; // 배터리가 부족하다는 표시 스프라이트
Image batteryStateImg; // 배터리 상태 표시 이미지
Image batteryFrameImg; // 배터리 모양 프레임 이미지
Image batteryLevelImg; // 배터리 잔량 표시 이미지
public void UpdateBatteryUI()
{
float batteryLevel = SystemInfo.batteryLevel;
switch (SystemInfo.batteryStatus)
{
case BatteryStatus.Full:
case BatteryStatus.Charging:batteryLevelImg.color = batteryFrameImg.color = Color.white;
batteryStateImg.sprite = chargeStateSprite;
batteryStateImg.gameObject.SetActive(true);
batteryLevelImg.fillAmount = 1f;
break;
case BatteryStatus.Discharging:
if(batteryLevel < 0.1f) // 배터리가 부족하면 이미지를 빨갛게
{
batteryLevelImg.color = batteryFrameImg.color = Color.red;
batteryStateImg.sprite = fewStateSprite;
batteryStateImg.gameObject.SetActive(true);
}
else
{
batteryLevelImg.color = batteryFrameImg.color = Color.white;
batteryStateImg.gameObject.SetActive(false);
}
batteryLevelImg.fillAmount = batteryLevel;
break;
}
}
}
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
[투네이션]
[Patreon]
[디스코드 채널]
'Unity3D > Programming' 카테고리의 다른 글
[Unity3D] 로그(Log) 출력시 스택 트레이스(Stack trace) 관리하기 (0) | 2018.10.15 |
---|---|
[Unity3D] Input - 마우스 입력 총정리 (2017.3.0f3) (0) | 2018.09.21 |
[Unity3D] Programming - 커스텀 IEnumerator 클래스 만들기(Custon yield instruction) (1) | 2017.07.17 |
[Unity3D] 로딩 씬(Loading Scene) 구현하기 (11) | 2017.07.10 |
[Unity3D] 유니티에서 XML 사용하기 (3) | 2017.06.05 |