আমি কীভাবে ব্যাটারি স্তর এবং রাষ্ট্র (প্লাগ ইন, ডিসচার্জিং, চার্জিং ইত্যাদি) পেতে পারি? আমি বিকাশকারী ডক্স নিয়ে গবেষণা করেছি এবং আমি ব্যাটারি ম্যানেজার ক্লাস পেয়েছি। তবে এতে কোনও পদ্ধতি নেই, কেবল ধ্রুবক রয়েছে। আমি কীভাবে এটি ব্যবহার করব?
আমি কীভাবে ব্যাটারি স্তর এবং রাষ্ট্র (প্লাগ ইন, ডিসচার্জিং, চার্জিং ইত্যাদি) পেতে পারি? আমি বিকাশকারী ডক্স নিয়ে গবেষণা করেছি এবং আমি ব্যাটারি ম্যানেজার ক্লাস পেয়েছি। তবে এতে কোনও পদ্ধতি নেই, কেবল ধ্রুবক রয়েছে। আমি কীভাবে এটি ব্যবহার করব?
উত্তর:
এখানে একটি কোড নমুনা যা ব্যাটারির তথ্য কীভাবে পাবেন তা ব্যাখ্যা করে।
এটির সংক্ষেপে, ACTION_BATTERY_CHANGED
উদ্দেশ্যটির জন্য একটি সম্প্রচার রিসিভার গতিশীলভাবে সেট আপ করা হয়, কারণ এটি প্রকাশ্যে ঘোষিত উপাদানগুলির মাধ্যমে প্রাপ্ত হতে পারে না, কেবল এটির সাথে স্পষ্টভাবে নিবন্ধন করে Context.registerReceiver()
।
public class Main extends Activity {
private TextView batteryTxt;
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context ctxt, Intent intent) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
batteryTxt.setText(String.valueOf(level) + "%");
}
};
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.main);
batteryTxt = (TextView) this.findViewById(R.id.batteryTxt);
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
}
অফিসিয়াল অ্যান্ড্রয়েড ডক্সের উপর ভিত্তি করে , আপনি বর্তমান ব্যাটারি শতাংশ পেতে কোনও সহায়ক বা ইউটিল ক্লাসে এই পদ্ধতিটি ব্যবহার করতে পারেন:
public static int getBatteryPercentage(Context context) {
if (Build.VERSION.SDK_INT >= 21) {
BatteryManager bm = (BatteryManager) context.getSystemService(BATTERY_SERVICE);
return bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
} else {
IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, iFilter);
int level = batteryStatus != null ? batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) : -1;
int scale = batteryStatus != null ? batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1) : -1;
double batteryPct = level / (double) scale;
return (int) (batteryPct * 100);
}
}
অ্যান্ড্রয়েডের ব্যাটারি ম্যানেজারটি একটি স্টিকি ইন্টেন্ট ব্যবহার করছে বলে আপনাকে একটি প্রকৃত ব্রডকাস্টার্সিভার নিবন্ধন করতে হবে না:
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = registerReceiver(null, ifilter);
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;
return (int)(batteryPct*100);
এটি https://developer.android.com/training/mon भयो-device-state/battery-mon भयो . html এ অফিশিয়াল ডক্স থেকে এসেছে ।
আপনি শতকরা চার্জ চার্জ পেতে এটি ব্যবহার করতে পারেন।
private void batteryLevel() {
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int rawlevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int level = -1;
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100) / scale;
}
batterLevel.setText("Battery Level Remaining: " + level + "%");
}
};
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);
}
এই ফাংশনটি চেষ্টা করার দরকার নেই পারমিসন বা কোনও রিসিভার
void getBattery_percentage()
{
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = getApplicationContext().registerReceiver(null, ifilter);
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;
float p = batteryPct * 100;
Log.d("Battery percentage",String.valueOf(Math.round(p)));
}
আমরা ব্যাটারি ম্যানেজার ব্যবহার করি এমন ব্যাটারি শতাংশ পরীক্ষা করতে , নিম্নলিখিত পদ্ধতিটি ব্যাটারি শতাংশ ফিরে আসবে।
উত্স লিঙ্ক
public static float getBatteryLevel(Context context, Intent intent) {
Intent batteryStatus = context.registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int batteryLevel = -1;
int batteryScale = 1;
if (batteryStatus != null) {
batteryLevel = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, batteryLevel);
batteryScale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, batteryScale);
}
return batteryLevel / (float) batteryScale * 100;
}
private void batteryLevel() {
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int level = -1;
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100) / scale;
}
mBtn.setText("Battery Level Remaining: " + level + "%");
}
};
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);
}
অফিসিয়াল ডক্সে একটি ভুল, আপনার অবশ্যই ডাবল পরিবর্তে ভাসা ব্যবহার করতে হবে। কারণ 0.53F * 100F = 52F
int level = batteryStatus != null ?
batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) : -1; int scale =
batteryStatus != null ? batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1) : -1;
double batteryPct = (double) level / (double) scale; int percent = (int) (batteryPct * 100D);
অন্যান্য উত্তরে কীভাবে ব্যাটারি স্থিতি অ্যাক্সেস করা যায় তা উল্লেখ করা হয়নি (ক্র্যাজিং বা না)।
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
// How are we charging?
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;