안 드 로 이 드 는 배터리 상태 표시,전력 및 충전 동적 디 스 플레이 를 탐지 하 는 방법 을 실현 한다.
안 드 로 이 드 시스템 의 배터리 검색 과 시스템 의 배터리 그림 을 사용 하면 다음 과 같 습 니 다.
원본 코드 에 있 는 xml 파일 두 개 를 도입 합 니 다.sys_battery.xml 오류 보고,아래 그림 참조:
1.이 그림 들 을 나의 drawable 디 렉 터 리 에 도입 한 후 statsys_battery.xml 의 그림 도입 경로 변경 은 다음 과 같 습 니 다.
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="4" android:drawable="@drawable/stat_sys_battery_0" />
<item android:maxLevel="14" android:drawable="@drawable/stat_sys_battery_10" />
<item android:maxLevel="29" android:drawable="@drawable/stat_sys_battery_20" />
<item android:maxLevel="49" android:drawable="@drawable/stat_sys_battery_40" />
<item android:maxLevel="69" android:drawable="@drawable/stat_sys_battery_60" />
<item android:maxLevel="89" android:drawable="@drawable/stat_sys_battery_80" />
<item android:maxLevel="100" android:drawable="@drawable/stat_sys_battery_100" />
</level-list>
2.다음은 activity 에서 의 동작:IntentFilter 만 들 기
private IntentFilter mIntentFilter;
oncreate 방법 중:가입:
//
mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
3.라디오 수신
//
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
int status = intent.getIntExtra("status", 0);
int health = intent.getIntExtra("health", 0);
boolean present = intent.getBooleanExtra("present", false);
int level = intent.getIntExtra("level", 0);
int scale = intent.getIntExtra("scale", 0);
int icon_small = intent.getIntExtra("icon-small", 0);
int plugged = intent.getIntExtra("plugged", 0);
int voltage = intent.getIntExtra("voltage", 0);
int temperature = intent.getIntExtra("temperature", 0);
String technology = intent.getStringExtra("technology");
String statusString = "";
switch (status) {
case BatteryManager.BATTERY_STATUS_UNKNOWN:
statusString = "unknown";
break;
case BatteryManager.BATTERY_STATUS_CHARGING:
statusString = "charging";
battery_image.setImageResource(R.drawable.stat_sys_battery_charge);
battery_image.getDrawable().setLevel(level);
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
statusString = "discharging";
battery_image.setImageResource(R.drawable.stat_sys_battery);
battery_image.getDrawable().setLevel(level);
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
statusString = "not charging";
break;
case BatteryManager.BATTERY_STATUS_FULL:
statusString = "full";
break;
}
String healthString = "";
switch (health) {
case BatteryManager.BATTERY_HEALTH_UNKNOWN:
healthString = "unknown";
break;
case BatteryManager.BATTERY_HEALTH_GOOD:
healthString = "good";
break;
case BatteryManager.BATTERY_HEALTH_OVERHEAT:
healthString = "overheat";
break;
case BatteryManager.BATTERY_HEALTH_DEAD:
healthString = "dead";
break;
case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
healthString = "voltage";
break;
case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
healthString = "unspecified failure";
break;
}
String acString = "";
switch (plugged) {
case BatteryManager.BATTERY_PLUGGED_AC:
acString = "plugged ac";
break;
case BatteryManager.BATTERY_PLUGGED_USB:
acString = "plugged usb";
break;
}
Log.i("cat", statusString);
Log.i("cat", healthString);
Log.i("cat", String.valueOf(present));
Log.i("cat", String.valueOf(level));
Log.i("cat", String.valueOf(scale));
Log.i("cat", String.valueOf(icon_small));
Log.i("cat", acString);
Log.i("cat", String.valueOf(voltage));
Log.i("cat", String.valueOf(temperature));
Log.i("cat", technology);
//
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
// ,
Log.d("Battery", "" + intent.getIntExtra("level", 0));
//
Log.d("Battery", "" + intent.getIntExtra("scale", 0));
//
Log.d("Battery", "" + intent.getIntExtra("voltage", 0));
//
Log.d("Battery", "" + intent.getIntExtra("temperature", 0));
// ,
// BatteryManager.BATTERY_STATUS_CHARGING
// BatteryManager.BATTERY_STATUS_DISCHARGING
// BatteryManager.BATTERY_STATUS_NOT_CHARGING
// BatteryManager.BATTERY_STATUS_FULL
Log.d("Battery", "ss" + intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_CHARGING));
// BatteryManager.BATTERY_PLUGGED_AC , , USB
Log.d("Battery", "" + intent.getIntExtra("plugged", 0));
// ,
//BatteryManager.BATTERY_HEALTH_GOOD
//BatteryManager.BATTERY_HEALTH_OVERHEAT
//BatteryManager.BATTERY_HEALTH_DEAD
//BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE
//BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE
Log.d("Battery", "" + intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN));
}
}
};
여기 서 진정 으로 그림 변환 을 처리 하 는 것 은 다음 과 같은 몇 마디 이다.
switch (status) {
case BatteryManager.BATTERY_STATUS_UNKNOWN:
statusString = "unknown";
break;
case BatteryManager.BATTERY_STATUS_CHARGING:
statusString = "charging";
battery_image.setImageResource(R.drawable.stat_sys_battery_charge);
battery_image.getDrawable().setLevel(level);
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
statusString = "discharging";
battery_image.setImageResource(R.drawable.stat_sys_battery);
battery_image.getDrawable().setLevel(level);
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
statusString = "not charging";
break;
case BatteryManager.BATTERY_STATUS_FULL:
statusString = "full";
break;
}
4.onResume 방법 에 메시지 처리 기 등록
registerReceiver(mIntentReceiver, mIntentFilter);
5.onPause 방법 에서 로그아웃
unregisterReceiver(mIntentReceiver);
이 글 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.