Android 15 會將遊戲的預設刷新率設為 60Hz,以盡量減少耗電量。如要解鎖更高的畫面更新率 (例如 120 FPS),現在必須使用 Frame Rate API 或 Swappy 程式庫明確要求。
不過,系統可能會根據電池電量或裝置溫度等因素,覆寫這項要求。雖然提高更新率可提升視覺效果的流暢度,但也會增加耗電量和發熱量。因此,請務必提供選項,讓使用者選擇偏好的更新率,並仔細監控效能,確保使用者體驗保持平衡。
使用 setFrameRate() API
遊戲開發人員可透過 setFrameRate() API 使用特定螢幕更新率。方法如下:
- 確認裝置和 Android 版本是否相容。
- 使用
setFrameRate()要求高 FPS。
確認裝置和 Android 版本是否相容:
使用 Display.getSupportedModes() 方法判斷裝置是否支援 90 Hz、120 Hz 或其他刷新率。如果裝置限制為 60 Hz,就無法超過這個上限。
Kotlin
val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}
要求高 FPS
在算繪迴圈開始時、遊戲視窗初始化期間,或目標 FPS 需要變更螢幕更新率時,請叫用 setFrameRate()。
即使要求更高的更新率,系統仍可能因省電模式或熱節流等因素,將更新率限制為 60Hz。如果遊戲的算繪效能未達到目標 FPS,要求更高的螢幕更新率可能會造成不必要的耗電,並提高裝置溫度。
下列程式碼片段示範如何使用 setFrameRate() API 避免過高的重新整理率。
Kotlin
val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setFrameRate(
targetFps,
Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
0
)
}
如需更多詳細資訊,請參閱影格速率頁面。
使用 Frame Pacing 程式庫
影格放送速度程式庫 (或 Swappy) 是開放原始碼程式庫,旨在簡化 C/C++ Android 遊戲引擎中的 VSync 管理和影格排程。
這項工具可簡化最佳化更新率的程序,有效做為 setFrameRate() 等功能的高階抽象層。此外,Swappy 還提供其他功能,可提升遊戲的整體流暢度和效能。
詳情請參閱 Swappy 頁面。
其他提示:如何獲得最佳結果
以下提供幾項實用訣竅:
- 動態影格速率切換。
- 效能監控
- 根據螢幕刷新率上限提供 FPS 選項。
動態切換影格速率
如要同時提升效能和降低耗電量,建議在遊戲中實作動態影格率切換功能。這項技術可讓您在需要較高刷新率 (例如 120 Hz) 的場景中,流暢地切換至較低的刷新率 (例如 60 Hz),以在較不密集的時刻或電量是考量因素時,節省電量或達到低於 60 FPS 的目標。如果螢幕持續以 120 Hz 的更新率運作,可能會導致過度發熱和快速電池耗電,進而造成負面使用者體驗。系統會根據目前的算繪負載和裝置狀況,智慧調整螢幕更新率,在視覺保真度和省電之間取得平衡。
監控效能
為確保遊戲在高更新率下發揮最佳效能,請整合影格計數器或效能疊加層等效能監控工具。這些工具可即時回報遊戲的實際影格率,方便您驗證是否持續達到目標 120 FPS。
如果影格率大幅波動,請考慮在特定裝置上以較低的影格率為目標。這樣就能提供更流暢的體驗,不會因為追求最高更新率而導致效能不穩。
根據螢幕最高更新率提供每秒影格數選項
遊戲應偵測目前裝置支援的最高螢幕刷新率 (例如 60 Hz、90 Hz 或 120 Hz),並據此限制 FPS 設定。舉例來說,如果裝置僅支援最高 60Hz,建議在遊戲設定中停用高於 60 FPS 的選項,以免玩家混淆。