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

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

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

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>

person user3260296    schedule 04.02.2014    source источник
comment
что там за проблема?   -  person Vishal Santharam    schedule 04.02.2014


Ответы (2)


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

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

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

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

Я надеюсь, что это поможет

person Jagan    schedule 04.02.2014

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

person Jon Ander Peñalba    schedule 04.02.2014