Показать текущее состояние батареи и автоматически изменяется при увеличении или уменьшении

Я создаю приложение для Android, в котором я хочу показать текущее состояние батареи. Я искал и нашел код для состояния батареи, но он будет отображать состояние батареи в текстовом виде, например, уровень заряда батареи остается 50%. Но я хочу показать его в качестве индикатора как ниже изображение. как я могу это сделать. и я также хочу, чтобы состояние батареи автоматически менялось при увеличении или уменьшении ее уровня зарядки.

код состояния батареи

package com.example.androidbatterypercentage;

  import android.os.BatteryManager;
  import android.os.Bundle;
  import android.app.Activity;
  import android.content.BroadcastReceiver;
  import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.view.Menu;
 import android.widget.TextView;

     public class MainActivity extends Activity {
   private TextView batteryPercent;
   private void getBatteryPercentage() {
    BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
         context.unregisterReceiver(this);
         int currentLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
         int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
         int level = -1;
         if (currentLevel >= 0 && scale > 0) {
             level = (currentLevel * 100) / scale;
          }
          batteryPercent.setText("Battery Level Remaining: " + level + "%");
      }
    };  
    IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
     registerReceiver(batteryLevelReceiver, batteryLevelFilter);
 }


     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      batteryPercent = (TextView) this.findViewById(R.id.batteryLevel);
      getBatteryPercentage();
  }


  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
  }

  }

XML-файл

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
       android:layout_height="match_parent"
       tools:context=".MainActivity">


  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world" />

  </RelativeLayout>

2 ответа

Решение

Привет, есть пример ссылки для текущего состояния батареи.

1) Отображение информации об аккумуляторе устройства Android

2) Получить информацию о батарее устройства

Вы можете использовать процесс в thread,TimerTask или же services получить автоматически

Надеюсь это поможет

Если вы хотите получать уведомления о любых изменениях батареи, вы должны создать BroadcastReceiver и слушать ACTION_BATERY_CHANGED намерения. Вы можете изменить свой TextView или изображение соответственно.

Другие вопросы по тегам