jmonkeyengine icon indicating copy to clipboard operation
jmonkeyengine copied to clipboard

[Android] Add support for the new Game-Mode API

Open pavly-gerges opened this issue 1 year ago • 0 comments

The Android team has launched a new API that's shipped with Android-12, the Game-Mode API reads the system game mode configuration to optimize the game accordingly using jMonkeyEngine APIs or submitting a call to the Android Stock Game interventions APIs, the first approach to this should be integrating a call to the Game-Mode API and adding a listener for that to be handled independently through users actions, for example, altering Lod, loading low-poly models or playing with frame-rates and disabling game filters.

A dummy example:

public interface GameMode {
      void onDisabled(GameManager gameManager);
      void onPerformanceEnabled(GameManager gameManager);
      void onBatterySaverEnabled(GameManager gameManager);
      void onStandardEnabled(GameManager gameManager);
}

...

// Later on JmeSurfaceView
GameMode gameMode;
...
// Only call this for Android 12 and higher devices
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ) {
  // Get GameManager from SystemService
  GameManager gameManager = Context.getSystemService(GameManager.class);

  // Returns the selected GameMode
  int gameMode = gameManager.getGameMode();
  if (gameMode == UNSUPPORTED) {
      gameMode.onDisabled(gameManager);
  } else if (gameMode == STANDARD) {
      gameMode.onStandardEnabled(gameManager);
  } else if (gameMode == BATTERY) {
      gameMode.onBatterySaverEnabled(gameManager);
  } else if (gameMode == PERFORMANCE) {
      gameMode.onPerformanceEnabled(gameManager);
  }
} else {
      gameMode.onDisabled(gameManager);
}

pavly-gerges avatar Apr 09 '23 14:04 pavly-gerges