How to Calculate Android Estimated Battery Remaining Time. 
within your AppCompatActivity
need to do register Battery change event listener with BroadcastReceiver like  
this.registerReceiver(this.mBatInfoReceiver, 
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Now you need to declare with Activity or where you need BroadcastReceiver 
int expectedlevel;
boolean isFirstAllow = true;
int second;
String strFirstTime,strSecondTime;
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
    @Override    public void onReceive(Context ctxt, Intent intent) {
        
        int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
        SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        Calendar c = Calendar.getInstance();
        if(isFirstAllow) {
            String formattedDate = format.format(c.getTime());
            strFirstTime  = formattedDate;
            expectedlevel = level - 1;
            isFirstAllow = false;
            second = new Time(System.currentTimeMillis()).getSeconds();
        }
        if(!isFirstAllow && level == expectedlevel){
            strSecondTime  = format.format(c.getTime());
            Date d1 = null;
            Date d2 = null;
            try {
                d1 = format.parse(strFirstTime);
                d2 = format.parse(strSecondTime);
                //in milliseconds               
               long diff = d2.getTime() - d1.getTime();
                long diffSeconds = diff / 1000 % 60;
                long diffMinutes = diff / (60 * 1000) % 60;
                long diffHours = diff / (60 * 60 * 1000) % 24;
                long diffDays = diff / (24 * 60 * 60 * 1000);
                System.out.print(diffDays + " days, ");
                System.out.print(diffHours + " hours, ");
                System.out.print(diffMinutes + " minutes, ");
                System.out.print(diffSeconds + " seconds.");
       // Now again we need percentage * difference time  = total long time value.
                long totalMinues =  diffMinutes * expectedlevel;
                long totalSecond  = diffSeconds * expectedlevel;
                long converttoMinutes = totalSecond/60;
                long addedAllMinues = totalMinues + converttoMinutes;
                // Now convert total minitues to millisecond;                
                 long AllMillisond = addedAllMinues * 60000;
     // Now Again convert this total Millisond to hours,minutes, second
                // for Battery Hours;
                long FinaldiffSeconds = AllMillisond / 1000 % 60;
                long FinaldiffMinutes = AllMillisond / (60 * 1000) % 60;
                long FinaldiffHours = AllMillisond / (60 * 60 * 1000) % 24;
                long FinaldiffDays = AllMillisond / (24 * 60 * 60 * 1000);
                System.out.print(FinaldiffDays + " days, ");
                System.out.print(FinaldiffHours + " hours, ");
                System.out.print(FinaldiffMinutes + " minutes, ");
                System.out.print(FinaldiffSeconds + " seconds.");
new AlertDialog.Builder(mcontext)
.setTitle("Battery Remaning Time")
.setMessage(FinaldiffDays + " days, "+""+FinaldiffHours + " hours," +
""+""+FinaldiffMinutes + " minutes, "+FinaldiffSeconds + " seconds.")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Continue with delete operation
   }
 })
.setNegativeButton(android.R.string.no, null)
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
};
 
 
No comments:
Post a Comment
Comments