- 안드로이드 어플리케이션에서 배터리 상태를 체크하기 위한 방법 -
BatteryManager class 사용하여 구현
(developer site link)
http://developer.android.com/reference/android/os/BatteryManager.html
방법은 구현하고자 하는 app. 에 BroadcastReceiver 를 추가하여, 'ACTION_BATTERY_CHANGED' 가 올때, 필요한 값들을 체크하여 사용하면 된다.
(ACTION_BATTERY_CHANGED 관련 developer site link)
http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_CHANGED
아래 샘플코드에서는 연결상태, 배터리상태, 배터리레벨 에 대해서 확인이 가능하도록 만들었다.
로그상 값만을 간단히 확인 가능하도록 만들었으며, 확장을 위해 context 등 불필요 코드가 몇가지 있으나, 실행에는 무관하다.
// 추가 : BroadcastReceiver 의 용법에 대해 주의해서 봐둔다.
UI 는 없으며, 아래 같이 로그에서만 확인이 가능함을 밝힌다.
--------------------------------------------------------------------------------------------------------------------------
Colorized version of the entered code
package com.BatteryChecker; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Bundle; import android.os.IBinder; import android.util.Log; public class BatteryCheckMain extends Activity { private static final String tag = "BatteryChecker"; private static final String filetag = "<BatteryCheckMain> / "; private Context context; private BroadcastReceiver mBatteryBroadcastReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; initBroadcastReceiver(context); registerBatteryReceiver(context); Log.i(tag, filetag + "PLUGED:" + BatteryManager.EXTRA_PLUGGED + "/LEVEL:" + BatteryManager.EXTRA_LEVEL + "/STATUS:" + BatteryManager.EXTRA_STATUS); setContentView(R.layout.main); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(tag, filetag + "onDeatroy()"); unregisterReceiver(mBatteryBroadcastReceiver); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); } // LOCAL FUNCTION ----------------------------------------------------------------------------- // make battery broadcast receiver boolean initBroadcastReceiver(Context context) { mBatteryBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); Log.i(tag, filetag + "mBatteryBroadcastReceiver - onReceive()/action:" +action); if(Intent.ACTION_BATTERY_CHANGED.equals(action)) { Log.i(tag, filetag + "PLUG:" + intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) + " / STATUS:" + intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN) + " / LEVEL:" + intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)); } } @Override public IBinder peekService(Context myContext, Intent service) { // TODO Auto-generated method stub return super.peekService(myContext, service); } }; return true; } //initBroadcastReceiver boolean registerBatteryReceiver(Context context) { Log.i(tag, filetag + "registerBatteryReceiver()"); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_BATTERY_LOW); registerReceiver(mBatteryBroadcastReceiver, filter); return true; } }
'android' 카테고리의 다른 글
ERROR 해결 - Error generating final archive: Debug certificate expired on (0) | 2015.11.23 |
---|---|
logcat 메시지 한글 출력 (0) | 2015.11.23 |
Android SDK 검색을 위한 크롬 플러그인 (0) | 2015.11.23 |
AppCompatActivity 에서 Menu resource에 showAsAction 쓰고자 하는 경우 (1) | 2015.11.23 |
Android Toolbar 적용하기(deprecated된 ActionBar 대신 적용하기) (0) | 2015.11.23 |