Skip to content

Commit 6ead46e

Browse files
authored
Add perf battery 性能图层增加 电池电量展示 (qiin2333#117)
* feat: Add PerfBattery layout file for game activity * feat: add perf Battery Display for PerformanceOverlayManager * feat: Add battery item display text to performance overlays * feat: Add 'battery' to default items in PerfOverlay preferences * fix: fix github online edit rename error * feat: improve showBatteryInfo display text via strings.xml
1 parent f3fdba9 commit 6ead46e

File tree

7 files changed

+99
-3
lines changed

7 files changed

+99
-3
lines changed

app/src/main/java/com/limelight/PerformanceOverlayManager.java

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ private enum PerformanceItem {
100100
PACKET_LOSS(R.id.perfPacketLoss, "packet_loss", "packetLossView"),
101101
NETWORK_LATENCY(R.id.perfNetworkLatency, "network_latency", "networkLatencyView"),
102102
DECODE_LATENCY(R.id.perfDecodeLatency, "decode_latency", "decodeLatencyView"),
103-
HOST_LATENCY(R.id.perfHostLatency, "host_latency", "hostLatencyView");
103+
HOST_LATENCY(R.id.perfHostLatency, "host_latency", "hostLatencyView"),
104+
BATTERY(R.id.perfBattery, "battery", "perfBatteryView");
104105

105106
final int viewId;
106107
final String preferenceKey;
@@ -221,6 +222,7 @@ private Runnable getInfoMethodForItem(PerformanceItem item) {
221222
case NETWORK_LATENCY: return this::showNetworkLatencyInfo;
222223
case DECODE_LATENCY: return this::showDecodeLatencyInfo;
223224
case HOST_LATENCY: return this::showHostLatencyInfo;
225+
case BATTERY: return this::showBatteryInfo;
224226
default: return this::showMoonPhaseInfo;
225227
}
226228
}
@@ -341,9 +343,21 @@ public void updatePerformanceInfo(final PerformanceInfo performanceInfo) {
341343
activity.runOnUiThread(() -> {
342344
showOverlayIfNeeded();
343345
updatePerformanceViewsWithStyledText(performanceInfo);
346+
// 单独更新电量信息(不需要performanceInfo参数)
347+
updateBatteryDisplay();
344348
});
345349
}
346350

351+
/**
352+
* 更新电量显示(定时调用)
353+
*/
354+
private void updateBatteryDisplay() {
355+
TextView batteryView = getPerformanceItemView(PerformanceItem.BATTERY);
356+
if (batteryView != null && batteryView.getVisibility() == View.VISIBLE) {
357+
updateBatteryText(batteryView);
358+
}
359+
}
360+
347361
/**
348362
* 更新带宽信息
349363
*/
@@ -499,6 +513,9 @@ private void updatePerformanceItemText(PerformanceItemInfo itemInfo, Performance
499513
case HOST_LATENCY:
500514
updateHostLatencyText(itemInfo.view, performanceInfo);
501515
break;
516+
case BATTERY:
517+
updateBatteryText(itemInfo.view);
518+
break;
502519
}
503520
}
504521

@@ -553,6 +570,48 @@ private void updateHostLatencyText(TextView view, PerformanceInfo performanceInf
553570
}
554571
}
555572

573+
private void updateBatteryText(TextView view) {
574+
int batteryLevel = UiHelper.getBatteryLevel(activity);
575+
String batteryText;
576+
int batteryColor;
577+
578+
if (batteryLevel > 50) {
579+
batteryText = String.valueOf(batteryLevel);
580+
batteryColor = 0xFF90EE90; // 浅绿色 - 电量充足
581+
} else if (batteryLevel > 20) {
582+
batteryText = String.valueOf(batteryLevel);
583+
batteryColor = 0xFFFFA500; // 橙色 - 电量偏低
584+
} else {
585+
batteryText = String.valueOf(batteryLevel);
586+
batteryColor = 0xFFFF6B6B; // 红色 - 电量严重不足
587+
}
588+
589+
view.setText(createStyledText("🔋", batteryText, "%", batteryColor));
590+
}
591+
592+
/**
593+
* 显示电池信息对话框
594+
*/
595+
private void showBatteryInfo() {
596+
int batteryLevel = UiHelper.getBatteryLevel(activity);
597+
String batteryStatus;
598+
int statusResId;
599+
600+
if (batteryLevel > 50) {
601+
statusResId = R.string.perf_battery_status_sufficient;
602+
} else if (batteryLevel > 20) {
603+
statusResId = R.string.perf_battery_status_low;
604+
} else {
605+
statusResId = R.string.perf_battery_status_critical;
606+
}
607+
608+
batteryStatus = activity.getString(statusResId);
609+
610+
String batteryInfo = activity.getString(R.string.perf_battery_info_content, batteryLevel, batteryStatus);
611+
612+
showInfoDialog(activity.getString(R.string.perf_battery_info_title), batteryInfo);
613+
}
614+
556615
/**
557616
* 获取指定性能项目的View
558617
*/
@@ -728,6 +787,9 @@ private void configureTextViewStyle(TextView textView, int gravity, boolean isVe
728787
} else if (viewId == R.id.perfHostLatency) {
729788
textView.setTypeface(Typeface.create("sans-serif", Typeface.NORMAL));
730789
textView.setTextSize(10);
790+
} else if (viewId == R.id.perfBattery) {
791+
textView.setTypeface(Typeface.create("sans-serif", Typeface.NORMAL));
792+
textView.setTextSize(10);
731793
}
732794
}
733795

app/src/main/java/com/limelight/preferences/PerfOverlayDisplayItemsPreference.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
public class PerfOverlayDisplayItemsPreference extends MultiSelectListPreference {
1616

17-
private static final String DEFAULT_ITEMS = "resolution,decoder,render_fps,network_latency,decode_latency,host_latency,packet_loss";
17+
private static final String DEFAULT_ITEMS = "resolution,decoder,render_fps,network_latency,decode_latency,host_latency,packet_loss,battery";
1818

1919
public PerfOverlayDisplayItemsPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
2020
super(context, attrs, defStyleAttr, defStyleRes);
@@ -91,4 +91,4 @@ public static void setDisplayItems(Context context, Set<String> items) {
9191
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
9292
prefs.edit().putStringSet("perf_overlay_display_items", items).apply();
9393
}
94-
}
94+
}

app/src/main/res/layout/activity_game.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,18 @@
135135
android:includeFontPadding="false"
136136
android:gravity="center_vertical" />
137137

138+
<TextView
139+
android:id="@+id/perfBattery"
140+
android:layout_width="match_parent"
141+
android:layout_height="wrap_content"
142+
android:layout_marginStart="12dp"
143+
android:textColor="#FFA500"
144+
android:textSize="10sp"
145+
android:fontFamily="sans-serif"
146+
android:letterSpacing="0.01"
147+
android:includeFontPadding="false"
148+
android:gravity="center_vertical" />
149+
138150
</LinearLayout>
139151

140152
<androidx.cardview.widget.CardView

app/src/main/res/values-es/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,12 @@
399399
<string name="perf_packet_loss_title">📶 Información de Pérdida de Paquetes</string>
400400
<string name="perf_packet_loss_info">La pérdida de paquetes representa el porcentaje de paquetes de datos perdidos durante la transmisión de red.\n\nRango Normal:\n• 0-0.5%: Excelente calidad de red\n• 0.5-2%: Buena calidad de red\n• 2-5%: Calidad justa de red\n• &gt;5%: Pobre calidad de red\n\nFactores que Influyen:\n• Estabilidad de red\n• Rendimiento del router\n• Fuerza de señal inalámbrica</string>
401401
<string name="perf_moon_phase_info">Fase Lunar de Hoy\n\n%s %s\nCiclo de Fase Lunar: %.1f%%\nDía del Ciclo: Día %d\nFecha: %s\n\n%s</string>
402+
<!-- perf Battery Information -->
403+
<string name="perf_battery_info_title">🔋 Información de Batería</string>
404+
<string name="perf_battery_status_sufficient">El nivel de batería es suficiente</string>
405+
<string name="perf_battery_status_low">El nivel de batería es bajo, se recomienda cargar</string>
406+
<string name="perf_battery_status_critical">El nivel de batería es críticamente bajo, por favor carga pronto</string>
407+
<string name="perf_battery_info_content">Batería Actual: %1$d%%\nEstado: %2$s\n\nConsejo: Un nivel bajo de batería puede afectar la experiencia de juego, se recomienda conectar el cargador</string>
402408
<string name="resolution_added_successfully">Resolución agregada exitosamente</string>
403409
<string name="resolution_already_exists">Esta resolución ya existe</string>
404410
<string name="suffix_enhanced_touch_zone_divider">%</string>

app/src/main/res/values-zh-rCN/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,12 @@
564564
<string name="perf_decode_latency_info">解码延迟表示解码视频帧所需的时间。\n\n延迟范围:\n• &lt;5ms:极佳解码器性能\n• 5–10ms:良好解码器性能\n• 10–20ms:一般解码器性能\n• &gt;20ms:较差解码器性能\n\n影响因素:\n• 硬件解码器性能\n• 视频编码复杂度\n• 设备CPU/GPU负载\n• 当解码延迟低于10ms时更应关注设备的其他性能(比如帧率、分辨率、画质等)</string>
565565
<string name="perf_host_latency_title">🖥 主机延迟信息</string>
566566
<string name="perf_host_latency_info">主机延迟表示主机处理帧所需的时间。\n\n延迟范围:\n• &lt;5ms:极佳主机性能\n• 5–10ms:良好主机性能\n• 10–20ms:一般主机性能\n• &gt;20ms:较差主机性能\n\n影响因素:\n• 主机硬件性能\n• 游戏负载\n• 后台程序使用\n\nVer.V+:\n• 表示版本信息\n• 当没有主机延迟数据时显示</string>
567+
<!-- Performance Overlay Info Dialogs - Battery Information -->
568+
<string name="perf_battery_info_title">🔋 电池信息</string>
569+
<string name="perf_battery_status_sufficient">电池电量充足</string>
570+
<string name="perf_battery_status_low">电池电量偏低,建议充电</string>
571+
<string name="perf_battery_status_critical">电池电量严重不足,请尽快充电</string>
572+
<string name="perf_battery_info_content">当前电量:%1$d%%\n状态:%2$s\n\n提示:低电量可能影响游戏体验,建议连接充电器</string>
567573

568574
<!-- App Last Settings strings -->
569575
<string name="app_last_settings_title">上一次设置</string>

app/src/main/res/values/arrays.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@
248248
<item>🌐 带宽与网络延迟</item>
249249
<item>⏱️/🥵 解码延迟(15ms以下为正常)</item>
250250
<item>🖥 主机延迟</item>
251+
<item>🔋 电池电量</item>
251252
</string-array>
252253
<string-array name="perf_overlay_display_items_values" translatable="false">
253254
<item>resolution</item>
@@ -257,6 +258,7 @@
257258
<item>network_latency</item>
258259
<item>decode_latency</item>
259260
<item>host_latency</item>
261+
<item>battery</item>
260262
</string-array>
261263
<string-array name="mic_icon_color_entries">
262264
<item>Gradient Blue</item>

app/src/main/res/values/strings.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,14 @@
607607
<string name="perf_host_latency_title">🖥️ Host Latency Information</string>
608608
<string name="perf_host_latency_info">Host latency represents the time for the game host to process frames.\n\nLatency Range:\n• &lt;5ms: Strong host performance\n• 5-10ms: Good host performance\n• 10-20ms: Fair host performance\n• &gt;20ms: Weak host performance\n\nInfluencing Factors:\n• Host hardware performance\n• Game load\n• Background program usage\n\nVer.V+:\n• Indicates version information\n• Displayed when no host latency data available</string>
609609

610+
611+
<!-- Performance Overlay Info Dialogs - Battery Information -->
612+
<string name="perf_battery_info_title">🔋 Battery Information</string>
613+
<string name="perf_battery_status_sufficient">Battery level is sufficient</string>
614+
<string name="perf_battery_status_low">Battery level is low, charging recommended</string>
615+
<string name="perf_battery_status_critical">Battery level is critically low, please charge soon</string>
616+
<string name="perf_battery_info_content">Current Battery: %1$d%%\nStatus: %2$s\n\nTip: Low battery may affect gaming experience, recommend connecting charger</string>
617+
610618
<!-- App Last Settings strings -->
611619
<string name="app_last_settings_title">Last Settings</string>
612620
<string name="app_last_settings_none">No last settings</string>

0 commit comments

Comments
 (0)