<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	android:installLocation="auto">

	<!-- Vulkan 1.1.0 is used if supported -->
	<uses-feature
		android:name="android.hardware.vulkan.version"
		android:required="false"
		android:version="0x00401000" />
	<!-- android:glEsVersion is not specified as OpenGL ES 1.0 is supported as fallback -->

	<!-- Only playable in landscape mode -->
	<uses-feature
		android:name="android.hardware.screen.landscape"
		android:required="true" />

	<!-- Touchscreen support -->
	<uses-feature
		android:name="android.hardware.touchscreen"
		android:required="false" />

	<!-- Game controller support -->
	<uses-feature
		android:name="android.hardware.bluetooth"
		android:required="false" />
	<uses-feature
		android:name="android.hardware.gamepad"
		android:required="false" />
	<uses-feature
		android:name="android.hardware.usb.host"
		android:required="false" />

	<!-- External mouse input events -->
	<uses-feature
		android:name="android.hardware.type.pc"
		android:required="false" />

	<!-- Teeworlds does broadcasts over local networks -->
	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
	<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
	<uses-permission android:name="android.permission.INTERNET" />

	<!-- Local server runs in a foreground service with a notification to control it -->
	<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
	<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
	<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

	<!-- usesCleartextTraffic because unencrypted UDP packets -->
	<application
		android:usesCleartextTraffic="true"
		android:label="@string/app_name"
		android:hasCode="true"
		android:supportsRtl="true"
		android:appCategory="game"
		android:icon="@mipmap/ic_launcher"
		android:roundIcon="@mipmap/ic_launcher_round"
		android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
		android:hardwareAccelerated="true">
		<activity
			android:name="org.ddnet.client.ClientActivity"
			android:alwaysRetainTaskState="true"
			android:exported="true"
			android:process=":client_process"
			android:configChanges="layoutDirection|locale|orientation|uiMode|screenLayout|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
			android:preferMinimalPostProcessing="true"
			android:screenOrientation="landscape"
			android:launchMode="singleInstance">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
			<!-- Let Android know that we can handle some USB devices and should receive this event -->
			<intent-filter>
				<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
			</intent-filter>
			<meta-data
				android:name="android.app.lib_name"
				android:value="DDNet" />
			<meta-data
				android:name="android.app.shortcuts"
				android:resource="@xml/shortcuts" />
		</activity>
		<!-- Server service must run in a different process because it needs to be terminated to restart the server -->
		<service
			android:name="org.ddnet.client.ServerService"
			android:exported="false"
			android:process=":server_process"
			android:foregroundServiceType="specialUse" />
			<property
				android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
				android:value="This service is used for hosting a LAN server to play the game in a local area network as well as without internet. A foreground service is used because the server should also continue running while the client activity is not in the foreground as other players may be connected to the server." />
			<meta-data
				android:name="android.app.lib_name"
				android:value="DDNet-Server" />
	</application>
</manifest>
