package com.android.infocolle;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.util.Log;
public class BatteryDetailInfo {
private static ArrayList<HashMap<String,Object>> mBatteryList = new ArrayList<HashMap<String,Object>>();
private static HashMap<String, Object> mBatteryMap = new HashMap<String, Object>();
public static ArrayList<HashMap<String, Object>> getBatteryDetail(Intent intent,Context context) {
/* 创建广播接收器 */
BroadcastReceiver onBatteryInfoReceiver = new BroadcastReceiver()
{
private int BatteryN; //目前电量
private int BatteryV; //电池电压
private double BatteryT; //电池温度
private String BatteryStatus; //电池状态
private String BatteryTemp; //电池使用情况
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
/*
* 如果捕捉到的action是ACTION_BATTERY_CHANGED, 就运行onBatteryInfoReceiver()
*/
if (Intent.ACTION_BATTERY_CHANGED.equals(action))
{
BatteryN = intent.getIntExtra("level", 0); //目前电量
BatteryV = intent.getIntExtra("voltage", 0); //电池电压
BatteryT = intent.getIntExtra("temperature", 0); //电池温度
switch (intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN))
{
case BatteryManager.BATTERY_STATUS_CHARGING:
BatteryStatus = "充电状态";
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
BatteryStatus = "放电状态";
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
BatteryStatus = "未充电";
break;
case BatteryManager.BATTERY_STATUS_FULL:
BatteryStatus = "充满电";
break;
case BatteryManager.BATTERY_STATUS_UNKNOWN:
BatteryStatus = "未知道状态";
break;
}
switch (intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN))
{
case BatteryManager.BATTERY_HEALTH_UNKNOWN:
BatteryTemp = "未知错误";
break;
case BatteryManager.BATTERY_HEALTH_GOOD:
BatteryTemp = "状态良好";
break;
case BatteryManager.BATTERY_HEALTH_DEAD:
BatteryTemp = "电池没有电";
break;
case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
BatteryTemp = "电池电压过高";
break;
case BatteryManager.BATTERY_HEALTH_OVERHEAT:
BatteryTemp = "电池过热";
break;
}
mBatteryMap.clear();
mBatteryMap.put("BatteryN", BatteryN);
mBatteryMap.put("BatteryV", BatteryV);
mBatteryMap.put("BatteryT", BatteryT);
mBatteryMap.put("BatteryStatus", BatteryStatus);
mBatteryMap.put("BatteryTemp", BatteryTemp);
Log.i("20171012liqin mBatteryMap : ", String.valueOf(mBatteryMap));
}
mBatteryList.clear();
mBatteryList.add(mBatteryMap);
Log.i("20171012liqin (BroadcastReceiver) mBatteryMap : ", String.valueOf(mBatteryMap));
Log.i("20171012liqin (BroadcastReceiver) mBatteryList : ", String.valueOf(mBatteryList));
}
};
context.registerReceiver(onBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Log.i("20171012liqin (getBatteryDetail) mBatteryList : ", String.valueOf(mBatteryList));
return mBatteryList;
}
}
20171012liqin (getBatteryDetail) mBatteryList : : []
20171012liqin mBatteryMap : : {BatteryStatus=充电状态, BatteryT=308.0, BatteryTemp=状态良好, BatteryV=4317, BatteryN=100}
20171012liqin (BroadcastReceiver) mBatteryMap : : {BatteryStatus=充电状态, BatteryT=308.0, BatteryTemp=状态良好, BatteryV=4317, BatteryN=100}
20171012liqin (BroadcastReceiver) mBatteryList : : [{BatteryStatus=充电状态, BatteryT=308.0, BatteryTemp=状态良好, BatteryV=4317, BatteryN=100}]
context.registerReceiver(onBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Log.i("20171012liqin (getBatteryDetail) mBatteryList : ", String.valueOf(mBatteryList));
return mBatteryList;
很明显是onBatteryInfoReceiver还没执行完就return mBatteryList