android系统服务中获取Battery信息

package com.android.server.battery;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.hardware.display.DisplayManager;
import android.os.BatteryManager;
import android.os.Binder;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Display;
import android.view.Gravity;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.content.Intent;
import android.os.BatteryManager;
import android.app.ActivityManager;

import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
import android.os.Looper;
import android.os.Bundle;
import android.os.SystemProperties;

public class BatteryHandle {
Context mContext;
int mBatteryLevel;

private String TAG = "BatteryHandle";
Looper mainLoop;
public BatteryHandle(Handler handler, Context context, int batteryLevel, int timeout) {
   //	 Looper.prepare();
    mContext = context;
    mBatteryLevel = batteryLevel;

 //   this.handler = handler;
mHandler =handler;
   handler.post(new Runnable() {
       @Override
      public void run() {
            initBattery(context, mBatteryLevel, timeout);
        }
   });
//	Looper.loop();
}

private void initBattery(Context context, int mBatteryLevel, int timeout) {
    BatteryDialog(context, mBatteryLevel, timeout);
	
}

 Handler mHandler = null;

TextView mTvBattereyTime;

private void BatteryDialog(Context context, int mBatteryLevel, int timeout) {

    mTvBattereyTime = new TextView(mContext.getApplicationContext());
    DisplayManager displayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE);
    Display display = displayManager.getDisplay(0);
    int mWidth = display.getWidth() / 3;
    Log.i(TAG, "mWidth: " + mWidth);
    mTvBattereyTime.setWidth(mWidth);
       String mNowTime ="";
    if (timeout ==5){
        mNowTime = mContext.getResources().getString(com.android.internal.R.string.battery_low_Power_than)
		+ mBatteryLevel + mContext.getResources().getString(com.android.internal.R.string.battery_low_please_charging)
		+ timeout +  mContext.getResources().getString(com.android.internal.R.string.battery_low_dialog_close_auto_seconds);
    }else{
          mNowTime = mContext.getResources().getString(com.android.internal.R.string.battery_low_Power_than)
		+ mBatteryLevel + mContext.getResources().getString(com.android.internal.R.string.battery_low_please_charging)
		+ timeout +  mContext.getResources().getString(com.android.internal.R.string.battery_low_will_auto_shutdown_seconds);
    }
    Log.i(TAG, "mNowTime: " + mNowTime);
    mTvBattereyTime.setTextColor(Color.BLACK);
    mTvBattereyTime.setGravity(Gravity.CENTER);
    mTvBattereyTime.setText(mNowTime);
    AlertDialog.Builder builder = new AlertDialog.Builder(mContext.getApplicationContext());
    builder.setTitle(mContext.getResources().getString(com.android.internal.R.string.battery_low_action_title));
    builder.setIcon(com.android.internal.R.drawable.stat_sys_battery_unknown);
    builder.setView(mTvBattereyTime);

    mBatteryAlertDialog = builder.create();
    mBatteryAlertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    //      alertDialog.setCancelable(false);
    //     alertDialog.setCanceledOnTouchOutside(false);
    mBatteryAlertDialog.show();

    mBatteryTimer = new Timer();
    batteryTimerTask = new BatteryTimerTask(this, timeout);
    mBatteryTimer.schedule(batteryTimerTask, 1000, 1000);

    mBatteryAlertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            Log.i(TAG, "onDismiss: ");
            CustomonDismiss();
        }
    });
}

Timer mBatteryTimer;

AlertDialog mBatteryAlertDialog;
BatteryTimerTask batteryTimerTask;

class BatteryTimerTask extends TimerTask {
    BatteryHandle batteryHandle;
    int timeout;

    public BatteryTimerTask(BatteryHandle batteryHandle, int timeout) {
        this.batteryHandle = batteryHandle;
        this.timeout = timeout;
		if(timeout == 10){
			isTimeoutShut =true;
		}else{
			isTimeoutShut =false;
		}
    }

    @Override
    public void run() {
        if (timeout > 0) {
            timeout--;
        }
   //     Message obtain = Message.obtain();
  //      obtain.what = 0;
  //      obtain.arg1 = timeout;
  //     handler.sendMessage(obtain);
	   
			if (timeout > 0) {
				 String mNowTime ="";
				if(isTimeoutShut){
					     mNowTime = mContext.getResources().getString(com.android.internal.R.string.battery_low_Power_than)
		+ mBatteryLevel + mContext.getResources().getString(com.android.internal.R.string.battery_low_please_charging)
		+ timeout +  mContext.getResources().getString(com.android.internal.R.string.battery_low_will_auto_shutdown_seconds);
				}else{
                      mNowTime = mContext.getResources().getString(com.android.internal.R.string.battery_low_Power_than)
		+ mBatteryLevel + mContext.getResources().getString(com.android.internal.R.string.battery_low_please_charging)
		+ timeout +  mContext.getResources().getString(com.android.internal.R.string.battery_low_dialog_close_auto_seconds);
              
				}
				  //mTvBattereyTime.setText(mNowTime);
	Message message = new Message();
    message.obj = mTvBattereyTime;
    Bundle bundle = new Bundle();
    bundle.putString("key_battery",mNowTime);
    message.setData(bundle);
    message.what = 200;
    mHandler.sendMessage(message);
            } else {
				if(isTimeoutShut){
					  CustomonDismiss();
					     Log.i(TAG, "onDismiss:REQUEST_SHUTDOWN ");
	Intent localIntent = new Intent("com.android.internal.intent.action.REQUEST_SHUTDOWN");
    localIntent.putExtra("android.intent.extra.KEY_CONFIRM", false);
    localIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mContext.startActivity(localIntent);
				}else{
					  CustomonDismiss();
				}
              
            }
    }
}
boolean isTimeoutShut =false;


public void CustomonDismiss() {
    if (mBatteryAlertDialog != null) {
        mBatteryAlertDialog.dismiss();
        mBatteryAlertDialog = null;
    }
    if (mBatteryTimer != null) {
        mBatteryTimer.cancel();
        mBatteryTimer = null;
    }
    if (batteryTimerTask != null) {
        batteryTimerTask.cancel();
        batteryTimerTask = null;
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

android framework

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值