반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 베터리의 상태를 감시 또는 감지 하는 방법에 대해 알아보겠습니다.
<베터리 관련 Action>
액션 | 설명 |
ACTION_BATTERY_CHANGED |
배터리 충전상태 변경
( 매니페스트로는 불가능, registerReceiver로 등록해야 한다. )
|
ACTION_BATTERY_LOW | 배터리 상태가 위험수준으로 낮아짐 |
ACTION_BATTERY_OKAY | 배터리 상태가 위험수준에서 양호한 상태로 전환 |
ACTION_POWER_CONNECTED | 외부 전원이 연결 |
ACTION_POWER_DISCONNECTED | 외부 전원이 분리 |
< 베터리 상태에 대한 intent extra 정보 >
상태 | 설명 |
EXTRA_PRESENT | 배터리가 존재하는지 조사 |
EXTRA_PLUGGED |
외부전원에 연결되어 있는지 조사.
0이면 베터리가 있고, 그 외의 경우 다른 전원 연결
BATTERY_PLUGGED_AC는 어댑터 연결,
BATTERY_PLUGGED_USB는 USB 연결 |
EXTRA_STATUS |
베터리의 현재 상태
BATTERY_STATUS_CHARGING : 충전중
BATTERY_STATUS_DISCHARGING : 방전중
BATTERY_STATUS_FULL : 가득 충전
BATTERY_STATUS_NOT_CHARGING : 충전중 아님
BATTERY_STATUS_UNKNOWN : 상태 알 수 없음
|
EXTRA_SCALE | 배터리 레벨 최대량 조사 |
EXTRA_LEVEL | 현재 충전 레벨 조사 |
EXTRA_HEALTH | 배터리의 성능 상태 조사 |
EXTRA_ICON_SMALL | 배터리 상태 표시하는 아이콘의 리소스 ID 조사 |
EXTRA_TECHNOLOGY | 배터리 방식 조사 |
EXTRA_TEMPERATURE | 온도 조사 |
EXTRA_VOLTAGE | 전압 조사 |
<example code>
public void onResume(){
IntentFilter filter = new IntentFiler();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
filter.addAction(Intent.ACTION_BETTERY_LOW);
filter.addAction(Intent.ACTION_BATTERY_OKAY);
filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
registerReceiver(mBRBattery, filter);
}
public void onPuase(){
super.onPause();
unregisterReceiver(mBRBattery);
}
BroadcastReceiver mBRBattery = new BroadcastReceiver(){
int count = 0;
public void onReceive (Context context, Intent intent){
String action = intent.getAction();
count++;
if (action.equals(Intent.ACTION_BATTERY_CHANGED)){
onBatteryChanged(intent);
}
if(action.equals(Intent.ACTION_BATTERY_LOW)){
// To do
}
if (action.equals(Intent.ACTION_BATTRY_OKAY)){
// To do
}
if (action.equals(Intent.ACTION_BATTRY_CONNECTED)){
// To do
}
if (action.equals(Intent.ACTION_BATTRY_DISCONNECTED)){
// To do
}
}
}
public void onBatteryChanged(Intent intent){
int plug, status, scale, level, ratio;
String sPlug = "";
String sStatus = "";
if (intent.getBooleanExtra(BatteryManager.EXTRA_PESENT, false) == false){
mStatus.setText("no battery");
return;
}
plug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
level = intent.getIntExtra(BatterManager.EXTRA_LEVEL, 0);
ratio = level * 100 / scale;
switch (plug){
case BatteryManager.BATTERY_PLUGGED_AC:
sPlug = "AC";
break;
case BatterManager.BATTERY+PLUGGED_USB:
sPlug = "USB";
break;
default:
sPlug = "BATTERY";
break;
}
switch (status){
case BatteryManager.BATTERY_STATUS_CHARGING:
sStatus = "Charging";
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
sStatus = "not charging";
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
sStatus = "discharging";
break;
case BatteryManager.BATTERY_STATUS_FULL:
sStatus = "fully charged";
break;
default:
case BatteryManager.BATTERY_STATUS_UNKNOWN:
sStatus = "Unknwon status";
break;
}
}
< 에뮬레이터에서 베터리 상태 조정하기 >
telnet localhost <emulator num>
명령 | 설명 |
power capacity n | 배터리 레벨 변경 n = 0~100 |
power ac on/off | 외부 전원을 연결 또는 해제 |
power status 상태 | 배터리 상태 변경. 지정 가능 상태는 charging, discharging, not-charging, full, unknown |
power health | 배터리 성능 조사 |
power present true/false | 배터리 탈부착 |
power display | 배터리 현재 상태 조사 |
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Notification 에 대한 모든 것. (0) | 2012.02.18 |
---|---|
[Android/안드로이드] Broadcast Receiver 에 대해 알아보자. (0) | 2012.02.18 |
[Android/안드로이드] SD Card (External Storage) 상태 감시하는 방법. (1) | 2012.02.18 |
[Android/안드로이드] Alarm Service 에 대해 알아본다. (0) | 2012.02.18 |
[Android/안드로이드] Service 에 대해 알아본다. (0) | 2012.02.18 |
댓글