CPU Info overlay update
Change-Id: I8061df3d6657d152807cda01b65bb68ab44229ef Signed-off-by: MOVZX <movzx@yahoo.com>
This commit is contained in:
@@ -19,6 +19,10 @@
|
||||
<string name="config_cpuTempSensor" translatable="false">/sys/class/thermal/thermal_zone0/temp</string>
|
||||
<string name="config_gpuTempSensor" translatable="false">/sys/class/kgsl/kgsl-3d0/temp</string>
|
||||
<string name="config_batteryTempSensor" translatable="false">/sys/class/power_supply/battery/temp</string>
|
||||
<string name="config_batteryVoltage" translatable="false">/sys/class/power_supply/battery/voltage_now</string>
|
||||
<string name="config_batteryCurrent" translatable="false">/sys/class/power_supply/battery/current_now</string>
|
||||
<string name="config_usbVoltage" translatable="false">/sys/class/power_supply/usb/voltage_now</string>
|
||||
<string name="config_usbCurrent" translatable="false">/sys/class/power_supply/usb/current_now</string>
|
||||
|
||||
<!-- The CPU temperature divider, if needed -->
|
||||
<integer name="config_cpuTempDivider" translatable="false">1</integer>
|
||||
|
||||
@@ -53,9 +53,14 @@ public class CPUInfoService extends Service {
|
||||
|
||||
private int CPU_TEMP_DIVIDER = 1;
|
||||
private int BATTERY_TEMP_DIVIDER = 10;
|
||||
private int CURRENT_INFO_DIVIDER = 1000;
|
||||
private String CPU_TEMP_SENSOR = "";
|
||||
private String GPU_TEMP_SENSOR = "";
|
||||
private String BATTERY_TEMP_SENSOR = "";
|
||||
private String BATTERY_VOLTAGE_SENSOR = "";
|
||||
private String BATTERY_CURRENT_SENSOR = "";
|
||||
private String USB_VOLTAGE_SENSOR = "";
|
||||
private String USB_CURRENT_SENSOR = "";
|
||||
private String FPS_SENSOR = "";
|
||||
private String DISPLAY_CPUS = "";
|
||||
private boolean mCpuTempAvail;
|
||||
@@ -83,6 +88,10 @@ public class CPUInfoService extends Service {
|
||||
private String mCpuTemp;
|
||||
private String mGpuTemp;
|
||||
private String mBatTemp;
|
||||
private String mBatVoltage;
|
||||
private String mBatCurrent;
|
||||
private String mUsbVoltage;
|
||||
private String mUsbCurrent;
|
||||
private String mGpuFreq;
|
||||
private String mGpuLoad;
|
||||
|
||||
@@ -101,10 +110,14 @@ public class CPUInfoService extends Service {
|
||||
mCpuTemp = parts[1];
|
||||
mGpuTemp = parts[2];
|
||||
mBatTemp = parts[3];
|
||||
mGpuFreq = parts[4];
|
||||
mGpuLoad = parts[5];
|
||||
mBatVoltage = parts[4];
|
||||
mBatCurrent = parts[5];
|
||||
mUsbVoltage = parts[6];
|
||||
mUsbCurrent = parts[7];
|
||||
mGpuFreq = parts[8];
|
||||
mGpuLoad = parts[9];
|
||||
|
||||
String[] cpuParts=parts[6].split("\\|");
|
||||
String[] cpuParts=parts[10].split("\\|");
|
||||
for(int i=0; i<cpuParts.length; i++){
|
||||
String cpuInfo=cpuParts[i];
|
||||
String cpuInfoParts[]=cpuInfo.split(":");
|
||||
@@ -134,7 +147,7 @@ public class CPUInfoService extends Service {
|
||||
setPadding(paddingPx, paddingPx, paddingPx, paddingPx);
|
||||
setBackgroundColor(Color.argb(0x60, 0, 0, 0));
|
||||
|
||||
final int textSize = Math.round(10 * density);
|
||||
final int textSize = Math.round(8 * density);
|
||||
|
||||
Typeface typeface = Typeface.create("monospace", Typeface.NORMAL);
|
||||
|
||||
@@ -143,7 +156,7 @@ public class CPUInfoService extends Service {
|
||||
mOnlinePaint.setAntiAlias(true);
|
||||
mOnlinePaint.setTextSize(textSize);
|
||||
mOnlinePaint.setColor(Color.WHITE);
|
||||
mOnlinePaint.setShadowLayer(5.0f, 0.0f, 0.0f, Color.BLACK);
|
||||
mOnlinePaint.setShadowLayer(25.0f, 0.0f, 0.0f, Color.BLACK);
|
||||
|
||||
mOfflinePaint = new Paint();
|
||||
mOfflinePaint.setTypeface(typeface);
|
||||
@@ -179,7 +192,7 @@ public class CPUInfoService extends Service {
|
||||
}
|
||||
|
||||
private String getCPUInfoString(int i) {
|
||||
return "Core " + mCpu[i] + ": " + String.format("%3s", mCurrLoad[i]) + " " + mCurrGov[i] + " " + String.format("%8s", toMHz(mCurrFreq[i]));
|
||||
return "CPU" + mCpu[i] + ": " + String.format("%3s", mCurrLoad[i]) + " " + mCurrGov[i] + " " + String.format("%8s", toMHz(mCurrFreq[i]));
|
||||
}
|
||||
|
||||
private String getTemp(String rawTemp) {
|
||||
@@ -202,6 +215,37 @@ public class CPUInfoService extends Service {
|
||||
}
|
||||
}
|
||||
|
||||
private String formatVoltage(String rawVoltage) {
|
||||
try {
|
||||
float voltage = Float.parseFloat(rawVoltage);
|
||||
voltage = voltage / 1000000.0f;
|
||||
return String.format("%.2fV", voltage);
|
||||
} catch (NumberFormatException e) {
|
||||
return "0.00V";
|
||||
}
|
||||
}
|
||||
|
||||
private String formatCurrent(String rawCurrent) {
|
||||
try {
|
||||
float current = Float.parseFloat(rawCurrent);
|
||||
current = Math.abs(current / 1000000.0f);
|
||||
return String.format("%.2fA", current);
|
||||
} catch (NumberFormatException e) {
|
||||
return "0.00A";
|
||||
}
|
||||
}
|
||||
|
||||
private String calculatePower(String rawVoltage, String rawCurrent) {
|
||||
try {
|
||||
float voltage = Float.parseFloat(rawVoltage) / 1000000.0f;
|
||||
float current = Math.abs(Float.parseFloat(rawCurrent) / 1000000.0f);
|
||||
float power = voltage * current;
|
||||
return String.format("%.2fW", power);
|
||||
} catch (NumberFormatException e) {
|
||||
return "0.00W";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
@@ -219,19 +263,25 @@ public class CPUInfoService extends Service {
|
||||
}
|
||||
|
||||
if(!mCpuTemp.equals("0")) {
|
||||
canvas.drawText("CPU: " + getTemp(mCpuTemp) + " °C",
|
||||
RIGHT-mPaddingRight-mMaxWidth, y-1, mOnlinePaint);
|
||||
y += mFH;
|
||||
}
|
||||
|
||||
if(!mGpuTemp.equals("0")) {
|
||||
canvas.drawText("GPU: " + getTemp(mGpuTemp) + " °C",
|
||||
canvas.drawText("CPU: " + getTemp(mCpuTemp) + "°C",
|
||||
RIGHT-mPaddingRight-mMaxWidth, y-1, mOnlinePaint);
|
||||
y += mFH;
|
||||
}
|
||||
|
||||
if(!mBatTemp.equals("0")) {
|
||||
canvas.drawText("BAT: " + getTemp(mBatTemp, BATTERY_TEMP_DIVIDER) + " °C",
|
||||
String batVoltage = formatVoltage(mBatVoltage);
|
||||
String batCurrent = formatCurrent(mBatCurrent);
|
||||
String batPower = calculatePower(mBatVoltage, mBatCurrent);
|
||||
canvas.drawText("BAT: " + getTemp(mBatTemp, BATTERY_TEMP_DIVIDER) + "°C " + batVoltage + " " + batCurrent + " " + batPower,
|
||||
RIGHT-mPaddingRight-mMaxWidth, y-1, mOnlinePaint);
|
||||
y += mFH;
|
||||
}
|
||||
|
||||
if(!mUsbVoltage.equals("0") || !mUsbCurrent.equals("0")) {
|
||||
String usbVoltage = formatVoltage(mUsbVoltage);
|
||||
String usbCurrent = formatCurrent(mUsbCurrent);
|
||||
String usbPower = calculatePower(mUsbVoltage, mUsbCurrent);
|
||||
canvas.drawText("USB: " + usbVoltage + " " + usbCurrent + " " + usbPower,
|
||||
RIGHT-mPaddingRight-mMaxWidth, y-1, mOnlinePaint);
|
||||
y += mFH;
|
||||
}
|
||||
@@ -242,14 +292,19 @@ public class CPUInfoService extends Service {
|
||||
canvas.drawText(s, RIGHT-mPaddingRight-mMaxWidth,
|
||||
y-1, mOnlinePaint);
|
||||
} else {
|
||||
canvas.drawText("Core " + mCpu[i] + ": offline", RIGHT-mPaddingRight-mMaxWidth,
|
||||
canvas.drawText("CPU" + mCpu[i] + ": offline", RIGHT-mPaddingRight-mMaxWidth,
|
||||
y-1, mOfflinePaint);
|
||||
}
|
||||
y += mFH;
|
||||
}
|
||||
|
||||
if(!mGpuFreq.equals("0") || !mGpuLoad.equals("0%")) {
|
||||
String gpuStats = "GPU: " + mGpuLoad + " " + mGpuFreq + " MHz";
|
||||
String gpuStats;
|
||||
if(!mGpuTemp.equals("0")) {
|
||||
gpuStats = "GPU0: " + mGpuLoad + " " + mGpuFreq + " MHz " + getTemp(mGpuTemp) + "°C";
|
||||
} else {
|
||||
gpuStats = "GPU0: " + mGpuLoad + " " + mGpuFreq + " MHz";
|
||||
}
|
||||
canvas.drawText(gpuStats, RIGHT-mPaddingRight-mMaxWidth, y-1, mOnlinePaint);
|
||||
y += mFH;
|
||||
}
|
||||
@@ -263,22 +318,38 @@ public class CPUInfoService extends Service {
|
||||
|
||||
int maxW = 0;
|
||||
if(mFpsAvail) maxW = Math.max(maxW, (int)mOnlinePaint.measureText("FPS: " + mFps));
|
||||
if(!mCpuTemp.equals("0")) maxW = Math.max(maxW, (int)mOnlinePaint.measureText("CPU: " + getTemp(mCpuTemp) + " °C"));
|
||||
if(!mGpuTemp.equals("0")) maxW = Math.max(maxW, (int)mOnlinePaint.measureText("GPU: " + getTemp(mGpuTemp) + " °C"));
|
||||
if(!mBatTemp.equals("0")) maxW = Math.max(maxW, (int)mOnlinePaint.measureText("BAT: " + getTemp(mBatTemp, BATTERY_TEMP_DIVIDER) + " °C"));
|
||||
if(!mCpuTemp.equals("0")) maxW = Math.max(maxW, (int)mOnlinePaint.measureText("CPU: " + getTemp(mCpuTemp) + "°C"));
|
||||
if(!mBatTemp.equals("0")) {
|
||||
String batVoltage = formatVoltage(mBatVoltage);
|
||||
String batCurrent = formatCurrent(mBatCurrent);
|
||||
String batPower = calculatePower(mBatVoltage, mBatCurrent);
|
||||
maxW = Math.max(maxW, (int)mOnlinePaint.measureText("BAT: " + getTemp(mBatTemp, BATTERY_TEMP_DIVIDER) + "°C " + batVoltage + " " + batCurrent + " " + batPower));
|
||||
}
|
||||
if(!mUsbVoltage.equals("0") || !mUsbCurrent.equals("0")) {
|
||||
String usbVoltage = formatVoltage(mUsbVoltage);
|
||||
String usbCurrent = formatCurrent(mUsbCurrent);
|
||||
String usbPower = calculatePower(mUsbVoltage, mUsbCurrent);
|
||||
maxW = Math.max(maxW, (int)mOnlinePaint.measureText("USB: " + usbVoltage + " " + usbCurrent + " " + usbPower));
|
||||
}
|
||||
|
||||
for(int i=0; i<mCurrFreq.length; i++){
|
||||
String s = getCPUInfoString(i);
|
||||
maxW = Math.max(maxW, (int)mOnlinePaint.measureText(s));
|
||||
}
|
||||
|
||||
String gpuStats = "GPU: " + mGpuLoad + " " + mGpuFreq + " MHz";
|
||||
String gpuStats;
|
||||
if(!mGpuTemp.equals("0")) {
|
||||
gpuStats = "GPU0: " + mGpuLoad + " " + mGpuFreq + " MHz " + getTemp(mGpuTemp) + "°C";
|
||||
} else {
|
||||
gpuStats = "GPU0: " + mGpuLoad + " " + mGpuFreq + " MHz";
|
||||
}
|
||||
maxW = Math.max(maxW, (int)mOnlinePaint.measureText(gpuStats));
|
||||
|
||||
mMaxWidth = maxW;
|
||||
|
||||
int neededWidth = mPaddingLeft + mPaddingRight + mMaxWidth;
|
||||
int numTempLines = (mFpsAvail?1:0) + (mCpuTempAvail?1:0) + (mGpuTempAvail?1:0) + (mBatTempAvail?1:0);
|
||||
int numTempLines = (mFpsAvail?1:0) + (mCpuTempAvail?1:0) + (mBatTempAvail?1:0) +
|
||||
((!mUsbVoltage.equals("0") || !mUsbCurrent.equals("0"))?1:0);
|
||||
int neededHeight = mPaddingTop + mPaddingBottom + (mFH * (numTempLines + NW + 1));
|
||||
if (neededWidth != mNeededWidth || neededHeight != mNeededHeight) {
|
||||
mNeededWidth = neededWidth;
|
||||
@@ -323,7 +394,7 @@ public class CPUInfoService extends Service {
|
||||
public void run() {
|
||||
try {
|
||||
while (!mInterrupt) {
|
||||
sleep(500);
|
||||
sleep(1000);
|
||||
StringBuffer sb=new StringBuffer();
|
||||
|
||||
String fpsVal = "0.0";
|
||||
@@ -355,6 +426,18 @@ public class CPUInfoService extends Service {
|
||||
String batTemp = CPUInfoService.readOneLine(BATTERY_TEMP_SENSOR);
|
||||
sb.append(batTemp == null ? "0" : batTemp).append(";");
|
||||
|
||||
String batVoltage = CPUInfoService.readOneLine(BATTERY_VOLTAGE_SENSOR);
|
||||
sb.append(batVoltage == null ? "0" : batVoltage).append(";");
|
||||
|
||||
String batCurrent = CPUInfoService.readOneLine(BATTERY_CURRENT_SENSOR);
|
||||
sb.append(batCurrent == null ? "0" : batCurrent).append(";");
|
||||
|
||||
String usbVoltage = CPUInfoService.readOneLine(USB_VOLTAGE_SENSOR);
|
||||
sb.append(usbVoltage == null ? "0" : usbVoltage).append(";");
|
||||
|
||||
String usbCurrent = CPUInfoService.readOneLine(USB_CURRENT_SENSOR);
|
||||
sb.append(usbCurrent == null ? "0" : usbCurrent).append(";");
|
||||
|
||||
String gpuFreq = CPUInfoService.readOneLine(GPU_FREQ_PATH);
|
||||
sb.append(gpuFreq == null ? "0" : gpuFreq).append(";");
|
||||
|
||||
@@ -436,9 +519,14 @@ public class CPUInfoService extends Service {
|
||||
super.onCreate();
|
||||
|
||||
CPU_TEMP_DIVIDER = getResources().getInteger(R.integer.config_cpuTempDivider);
|
||||
CURRENT_INFO_DIVIDER = getResources().getInteger(R.integer.config_currentInfoDivider);
|
||||
DISPLAY_CPUS = getResources().getString(R.string.config_displayCpus);
|
||||
FPS_SENSOR = getResources().getString(R.string.config_fpsInfoSysNode);
|
||||
BATTERY_TEMP_SENSOR = getResources().getString(R.string.config_batteryTempSensor);
|
||||
BATTERY_VOLTAGE_SENSOR = getResources().getString(R.string.config_batteryVoltage);
|
||||
BATTERY_CURRENT_SENSOR = getResources().getString(R.string.config_batteryCurrent);
|
||||
USB_VOLTAGE_SENSOR = getResources().getString(R.string.config_usbVoltage);
|
||||
USB_CURRENT_SENSOR = getResources().getString(R.string.config_usbCurrent);
|
||||
GPU_TEMP_SENSOR = getResources().getString(R.string.config_gpuTempSensor);
|
||||
CPU_TEMP_SENSOR = getResources().getString(R.string.config_cpuTempSensor);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user