نمایش میزان باطری گوشی در اندروید

یکشنبه 16 اسفند 1394

در این مقاله می خواهیم با استفاده از قطعه کدی میزان باطری گوشی خود را بر روی یک صفحه نمایش دهیم، یک نمونه ی ساده برای این مقاله هم قرار می دهیم.

نمایش  میزان باطری گوشی در اندروید

یک برنامه ی کاملا ساده برای نوشتن این برنامه داریم، شما باید از broadcast receiver استفاده کنید قبل از شروع نوشتن برنامه توضیحاتی را به طور خلاصه می دهیم.

Intent.Action_Battery_Changed

این بخش شامل اطلاعات مربوط به باطری است، کلاس BatteryManager این کلاس شامل ثابت ها و رشته ها است و مقادیر آن از intent ثابتی به نام ACTION_BATTERY_CHANGED استفاده می شود.

در میان مقادیر که ثابت تعریف شده اند دو مقدار ثابت به نام BatteryManager.EXTRA_LEVEL و BatteryManager.EXTRA_SCALE داریم .

BatteryManager.Extra_Level

اگر عدد صحیحی قرار دهیم میزان مصرفی باطری در زمان فعلی را مشخص می نماید.

BatteryManager.Extra_Scale

این عدد معمولا به صورت صحیح است و میزان حداکثر باطری را مشخص می نماید.

registerReceiver(BroadcastReceiver receiver, IntentFilter filter)

در این نمونه نیاز هست که شما BroadcastReceiver را تعریف نمایید، هر زمان که این رویداد رخ دهد مقدار مورد نظر را دریافت می نمایید، و مقدار مورد نظر را ثبت می نماید.

برای activity مورد نظر قطعه کد زیر را قرار دهید:

<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:id="@+id/batteryLevel"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:gravity="center_vertical|center_horizontal"
        android:textSize="20dip"> 
    </TextView>
</RelativeLayout>

یک textview برای نمایش میزان باطری در لایه ی activity خود قرار دهید.

فقط برای کلاس جاوای خود قطعه کد زیر را قرار دهید:

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);
  }
 
   /* @Override*/
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         batteryPercent = (TextView) this.findViewById(R.id.batteryLevel);
         getBatteryPercentage();
    }

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

داخل متد OnCraete یک textview قرار دادیم که آن را تعریف می نماییم، یک متد به نام OnCraeteOptionMenu استفاده کرده ایم که برای تعریف منو از آن استفاده می شود، یک متد برای درصد اندازه ی شارژ باطری می نویسیم و بعد آن را در متد oncreate تعریف می نماییم.

متدی که نوشتیم دو متغییر صحیحی است که در بالا تعریف کرده بودیم میزان مصرفی باطری و میزان حداکثر باطری که اگر مقدار مورد نظر را در 100 ضرب کنیم بر روی scale تقسیم نماییم میزان در صد باطری گوشی مشخص می شود.

خروجی به صورت زیر خواهد بود:

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید