CurrentInfo.java 4.1 KB
Newer Older
A
commit  
andrewleo 已提交
1 2
package com.netease.qa.emmagee.utils;

A
andrewleo 已提交
3 4 5 6 7
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
8
import java.util.Locale;
A
andrewleo 已提交
9 10 11 12

import android.os.Build;
import android.util.Log;

A
andrewleo 已提交
13 14 15 16 17 18
/**
 * Current info
 * 
 * @author andrewleo
 * 
 */
A
commit  
andrewleo 已提交
19
public class CurrentInfo {
A
andrewleo 已提交
20
	private static final String LOG_TAG = "Emmagee-CurrentInfo";
21 22 23 24 25 26 27
	private static final String BUILD_MODEL = Build.MODEL.toLowerCase(Locale.ENGLISH);
	private static final String I_MBAT = "I_MBAT: ";
	private static final String CURRENT_NOW = "/sys/class/power_supply/battery/current_now";
	private static final String BATT_CURRENT = "/sys/class/power_supply/battery/batt_current";
	private static final String SMEM_TEXT = "/sys/class/power_supply/battery/smem_text";
	private static final String BATT_CURRENT_ADC = "/sys/class/power_supply/battery/batt_current_adc";
	private static final String CURRENT_AVG = "/sys/class/power_supply/battery/current_avg";
A
andrewleo 已提交
28

29
	public Long getCurrentValue() {
A
andrewleo 已提交
30
		File f = null;
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
		Log.d(LOG_TAG, BUILD_MODEL);
		// galaxy s4,oppo find,samgsung note2
		if (BUILD_MODEL.contains("sgh-i337") || BUILD_MODEL.contains("gt-i9505") || BUILD_MODEL.contains("sch-i545")
				|| BUILD_MODEL.contains("find 5") || BUILD_MODEL.contains("sgh-m919") || BUILD_MODEL.contains("sgh-i537")
				|| BUILD_MODEL.contains("x907") || BUILD_MODEL.contains("gt-n7100")) {
			f = new File(CURRENT_NOW);
			if (f.exists()) {
				return getCurrentValue(f, false);
			}
		}

		// samsung galaxy
		if (BUILD_MODEL.contains("gt-p31") || BUILD_MODEL.contains("gt-p51")) {
			f = new File(CURRENT_AVG);
			if (f.exists()) {
				return getCurrentValue(f, false);
			}
		}

		// htc desire hd ,desire z
		if (BUILD_MODEL.contains("desire hd") || BUILD_MODEL.contains("desire z")) {
			f = new File(BATT_CURRENT);
A
andrewleo 已提交
53 54 55 56
			if (f.exists())
				return getCurrentValue(f, false);
		}

57 58
		// htc sensation z710e
		f = new File(BATT_CURRENT);
A
andrewleo 已提交
59 60
		if (f.exists())
			return getCurrentValue(f, false);
61 62 63

		// htc one V
		f = new File(SMEM_TEXT);
A
andrewleo 已提交
64 65
		if (f.exists())
			return getSMemValue();
66 67 68

		// nexus one,meizu
		f = new File(CURRENT_NOW);
A
andrewleo 已提交
69 70
		if (f.exists())
			return getCurrentValue(f, true);
71 72 73

		// galaxy note, galaxy s2
		f = new File(BATT_CURRENT_ADC);
A
andrewleo 已提交
74 75
		if (f.exists())
			return getCurrentValue(f, false);
76 77 78

		// acer V360
		f = new File("/sys/class/power_supply/battery/BatteryAverageCurrent");
A
andrewleo 已提交
79 80
		if (f.exists())
			return getCurrentValue(f, false);
81 82 83 84 85 86

		// moto milestone,moto mb526
		f = new File("/sys/devices/platform/cpcap_battery/power_supply/usb/current_now");
		if (f.exists())
			return getCurrentValue(f, false);

A
andrewleo 已提交
87 88 89
		return null;
	}

90 91 92 93 94 95
	/**
	 * 从smem_text文件中读取电流数据
	 * 
	 * @return
	 */
	public Long getSMemValue() {
A
andrewleo 已提交
96 97
		boolean success = false;
		String text = null;
98
		Long value = null;
A
andrewleo 已提交
99
		try {
100
			FileReader fr = new FileReader(SMEM_TEXT);
A
andrewleo 已提交
101 102 103
			BufferedReader br = new BufferedReader(fr);
			String line = br.readLine();
			while (line != null) {
104 105
				if (line.contains(I_MBAT)) {
					text = line.substring(line.indexOf(I_MBAT) + 8);
A
andrewleo 已提交
106 107 108 109 110 111
					success = true;
					break;
				}
				line = br.readLine();
			}
			fr.close();
112 113 114
			br.close();
		} catch (Exception e) {
			e.printStackTrace();
A
andrewleo 已提交
115 116 117 118 119
		}
		if (success) {
			try {
				value = Long.parseLong(text);
			} catch (NumberFormatException nfe) {
120
				nfe.printStackTrace();
A
andrewleo 已提交
121 122 123 124 125 126
				value = null;
			}
		}
		return value;
	}

A
andrewleo 已提交
127 128 129 130 131 132 133
	/**
	 * 获取当前的电流值
	 * 
	 * @param file
	 * @param convertToMillis
	 * @return
	 */
A
andrewleo 已提交
134
	public Long getCurrentValue(File file, boolean convertToMillis) {
135 136 137 138 139 140
		Log.d(LOG_TAG, "*** getCurrentValue ***");
		Log.d(LOG_TAG, "*** " + convertToMillis + " ***");
		String line = null;
		Long value = null;
		FileInputStream fs = null;
		DataInputStream ds = null;
A
andrewleo 已提交
141
		try {
142 143 144 145 146 147 148 149 150 151 152 153
			fs = new FileInputStream(file);
			ds = new DataInputStream(fs);
			line = ds.readLine();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				fs.close();
				ds.close();
			} catch (Exception ex) {
				ex.printStackTrace();
			}
A
andrewleo 已提交
154
		}
155
		if (line != null) {
A
andrewleo 已提交
156
			try {
157
				value = Long.parseLong(line);
A
andrewleo 已提交
158 159 160 161
			} catch (NumberFormatException nfe) {
				value = null;
			}
			if (convertToMillis)
162
				value = value / 1000;
A
andrewleo 已提交
163 164 165
		}
		return value;
	}
A
commit  
andrewleo 已提交
166
}