Add ability to change default Android screen orientation.

This commit is contained in:
Chandler Cox
2023-12-08 15:48:43 -06:00
parent 306dd43b18
commit df83491313
3 changed files with 63 additions and 1 deletions

View File

@@ -169,6 +169,30 @@ bool AndroidPlatformTools::OnPostProcess(CookingData& data)
permissions += String::Format(TEXT("\n <uses-permission android:name=\"{0}\" />"), e.Item); permissions += String::Format(TEXT("\n <uses-permission android:name=\"{0}\" />"), e.Item);
} }
// Setup default Android screen orientation
auto defaultOrienation = platformSettings->DefaultOrientation;
String orientation = String("fullSensor");
switch (defaultOrienation)
{
case AndroidScreenOrientation::Portrait:
orientation = String("portrait");
break;
case AndroidScreenOrientation::PortraitReverse:
orientation = String("reversePortrait");
break;
case AndroidScreenOrientation::LandscapeRight:
orientation = String("landscape");
break;
case AndroidScreenOrientation::LandscapeLeft:
orientation = String("reverseLandscape");
break;
case AndroidScreenOrientation::AutoRotation:
orientation = String("fullSensor");
break;
default:
break;
}
// Setup Android application attributes // Setup Android application attributes
String attributes; String attributes;
if (data.Configuration != BuildConfiguration::Release) if (data.Configuration != BuildConfiguration::Release)
@@ -223,6 +247,7 @@ bool AndroidPlatformTools::OnPostProcess(CookingData& data)
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${PackageName}"), packageName); EditorUtilities::ReplaceInFile(manifestPath, TEXT("${PackageName}"), packageName);
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${ProjectVersion}"), projectVersion); EditorUtilities::ReplaceInFile(manifestPath, TEXT("${ProjectVersion}"), projectVersion);
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${AndroidPermissions}"), permissions); EditorUtilities::ReplaceInFile(manifestPath, TEXT("${AndroidPermissions}"), permissions);
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${DefaultOrientation}"), orientation);
EditorUtilities::ReplaceInFile(manifestPath, TEXT("${AndroidAttributes}"), attributes); EditorUtilities::ReplaceInFile(manifestPath, TEXT("${AndroidAttributes}"), attributes);
const String stringsPath = data.OriginalOutputPath / TEXT("app/src/main/res/values/strings.xml"); const String stringsPath = data.OriginalOutputPath / TEXT("app/src/main/res/values/strings.xml");
EditorUtilities::ReplaceInFile(stringsPath, TEXT("${ProjectName}"), gameSettings->ProductName); EditorUtilities::ReplaceInFile(stringsPath, TEXT("${ProjectName}"), gameSettings->ProductName);

View File

@@ -9,6 +9,37 @@
class Texture; class Texture;
/// <summary>
/// Android screen orientation options.
/// </summary>
API_ENUM() enum class FLAXENGINE_API AndroidScreenOrientation
{
/// <summary>
/// "portrait" mode
/// </summary>
Portrait,
/// <summary>
/// "reversePortrait" mode
/// </summary>
PortraitReverse,
/// <summary>
/// "landscape" mode
/// </summary>
LandscapeRight,
/// <summary>
/// "reverseLandscape" mode
/// </summary>
LandscapeLeft,
/// <summary>
/// "fullSensor" mode
/// </summary>
AutoRotation,
};
/// <summary> /// <summary>
/// Android platform settings. /// Android platform settings.
/// </summary> /// </summary>
@@ -29,6 +60,12 @@ API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API
API_FIELD(Attributes="EditorOrder(100), EditorDisplay(\"General\")") API_FIELD(Attributes="EditorOrder(100), EditorDisplay(\"General\")")
Array<String> Permissions; Array<String> Permissions;
/// <summary>
/// The default screen orientation.
/// </summary>
API_FIELD(Attributes = "EditorOrder(110), EditorDisplay(\"General\")")
AndroidScreenOrientation DefaultOrientation = AndroidScreenOrientation::AutoRotation;
/// <summary> /// <summary>
/// Custom icon texture to use for the application (overrides the default one). /// Custom icon texture to use for the application (overrides the default one).
/// </summary> /// </summary>

View File

@@ -10,7 +10,7 @@
<activity android:name="com.flaxengine.GameActivity" <activity android:name="com.flaxengine.GameActivity"
android:label="@string/app_name" android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenSize" android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="fullSensor"> android:screenOrientation="${DefaultOrientation}">
<meta-data android:name="android.app.lib_name" android:value="FlaxGame" /> <meta-data android:name="android.app.lib_name" android:value="FlaxGame" />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />