mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-12 11:31:08 +00:00
* feat: desktop and scrolling wall live wallpapers selectable from Android settings * fix: render the wall wallpaper off the main thread and give it its own thumbnail * fix: serialize wall wallpaper visibility and wait out in-flight draws on surface destroy * fix: restart the wall loop on surface recreation and keep queued visibility changes * fix: keep the wall loop alive across a failed canvas lock and finish redraws before returning * fix: post the wall redraw asynchronously on surface change * fix: redraw the desktop wallpaper logo from the real mark and show game covers on the wall * chore: mount the git dir in build containers and seed new worktrees from the main checkout * fix: decode wall covers as RGB_565 and seed worktree assets only into empty dirs * feat: drop the desktop wallpaper and add frame rate and speed settings to the wall * feat: wall settings over the live wallpaper with a match-screen rate, and drop the center vignette * perf: pace the wall on vsync and draw it on a hardware canvas * fix: stage worktree seed copies and publish them only after they succeed * fix: point the wall settings link at the activity class so the picker shows the gear * fix: dedupe wall covers by app and space repeats like the in-app wall, keep the frame loop alive across surface gaps * fix: show the picker preview behind wall settings and drop the display-rate lookup * fix: stop wall frame callbacks when the surface goes and only replace an empty seed destination * fix: skip a seed when the destination reappears before the staged copy is moved in
379 lines
19 KiB
XML
379 lines
19 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools">
|
|
|
|
<queries>
|
|
<package android:name="cn.nubia.gamelauncher" />
|
|
<intent>
|
|
<action android:name="android.content.pm.action.CONFIRM_INSTALL" />
|
|
</intent>
|
|
<intent>
|
|
<action android:name="android.content.pm.action.CONFIRM_PERMISSIONS" />
|
|
</intent>
|
|
<intent>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.HOME" />
|
|
</intent>
|
|
<intent>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.SECONDARY_HOME" />
|
|
</intent>
|
|
</queries>
|
|
|
|
<uses-permission android:name="android.permission.REORDER_TASKS" />
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
<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.WRITE_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
|
<uses-permission android:name="android.permission.VIBRATE" />
|
|
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
|
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
|
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
|
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
|
<uses-permission android:name="android.permission.CAMERA" />
|
|
|
|
<uses-feature android:name="android.hardware.vulkan.version" android:version="0x401000" android:required="true" />
|
|
<uses-feature android:name="android.hardware.gamepad" android:required="false" />
|
|
<uses-feature android:name="android.hardware.camera" android:required="false" />
|
|
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
|
|
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
|
|
<uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="false" />
|
|
|
|
<application
|
|
android:name=".App"
|
|
android:localeConfig="@xml/locales_config"
|
|
android:networkSecurityConfig="@xml/network_security_config"
|
|
android:allowBackup="false"
|
|
android:allowAudioPlaybackCapture="true"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:label="@string/app_name"
|
|
android:theme="@style/AppTheme"
|
|
android:hardwareAccelerated="true"
|
|
android:largeHeap="true"
|
|
android:extractNativeLibs="true"
|
|
android:appCategory="game"
|
|
android:isGame="true">
|
|
|
|
<meta-data android:name="android.game_mode_config" android:resource="@xml/game_mode_config" />
|
|
<service android:name=".glasses.LumaRgbCaptureService" android:exported="false"
|
|
android:process=":rgb_diagnostic" />
|
|
<service android:name=".wallpaper.SteamWallService"
|
|
android:label="@string/steam_wall_label"
|
|
android:permission="android.permission.BIND_WALLPAPER"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.service.wallpaper.WallpaperService" />
|
|
</intent-filter>
|
|
<meta-data android:name="android.service.wallpaper" android:resource="@xml/steam_wall_wallpaper" />
|
|
</service>
|
|
<activity android:name=".wallpaper.WallpaperSettingsActivity"
|
|
android:label="@string/steam_wall_label"
|
|
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
|
android:exported="true" />
|
|
<service android:name=".input.HomeButtonService"
|
|
android:label="@string/integration_shortcuts_service"
|
|
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.accessibilityservice.AccessibilityService" />
|
|
</intent-filter>
|
|
<meta-data android:name="android.accessibilityservice" android:resource="@xml/home_button_service" />
|
|
</service>
|
|
<service android:name=".session.BottomNotificationListener"
|
|
android:label="@string/bottom_notifications_listener"
|
|
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.service.notification.NotificationListenerService" />
|
|
</intent-filter>
|
|
</service>
|
|
<receiver android:name=".core.ShortcutsListingReceiver" android:exported="false"
|
|
android:process=":shortcuts_sync">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
|
|
</intent-filter>
|
|
</receiver>
|
|
<meta-data android:name="com.oculus.supportedDevices" android:value="quest2|quest3|quest3s" />
|
|
<activity android:name=".QuestXrActivity" android:exported="true" android:launchMode="singleTask"
|
|
android:permission="android.permission.DUMP"
|
|
android:resizeableActivity="false" android:screenOrientation="landscape"
|
|
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|keyboard|navigation|uiMode"
|
|
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
|
|
<meta-data android:name="android.app.lib_name" android:value="droiddeckxr" />
|
|
<intent-filter>
|
|
<action android:name="com.droiddeck.launcher.XR" />
|
|
<category android:name="com.oculus.intent.category.VR" />
|
|
<category android:name="org.khronos.openxr.intent.category.IMMERSIVE_HMD" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<activity
|
|
android:name=".PairingGuideActivity"
|
|
android:exported="false"
|
|
android:launchMode="singleTask"
|
|
android:taskAffinity="${applicationId}.pairingguide"
|
|
android:excludeFromRecents="true"
|
|
android:supportsPictureInPicture="true"
|
|
android:resizeableActivity="true"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|density|keyboard|keyboardHidden|navigation"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity
|
|
android:name=".FrontEndActivity"
|
|
android:exported="true"
|
|
android:screenOrientation="user"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|density|keyboard|keyboardHidden|navigation">
|
|
<layout android:defaultWidth="1024dp" android:defaultHeight="640dp" />
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
<category android:name="android.intent.category.CAR_LAUNCHER" />
|
|
<data android:scheme="droiddeck" android:host="game" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.CREATE_SHORTCUT" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="com.droiddeck.launcher.LAUNCH_GAME" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.CAR_LAUNCHER" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<activity-alias
|
|
android:name=".MainActivity"
|
|
android:targetActivity=".FrontEndActivity"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
<category android:name="android.intent.category.CAR_LAUNCHER" />
|
|
</intent-filter>
|
|
</activity-alias>
|
|
|
|
<activity-alias
|
|
android:name=".LauncherLight"
|
|
android:targetActivity=".FrontEndActivity"
|
|
android:icon="@mipmap/ic_launcher_light"
|
|
android:enabled="false"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
<category android:name="android.intent.category.CAR_LAUNCHER" />
|
|
</intent-filter>
|
|
</activity-alias>
|
|
|
|
<activity
|
|
android:name=".HomeActivity"
|
|
android:enabled="false"
|
|
android:exported="true"
|
|
android:excludeFromRecents="true"
|
|
android:noHistory="true"
|
|
android:taskAffinity="${applicationId}.home"
|
|
android:screenOrientation="user"
|
|
android:theme="@android:style/Theme.Translucent.NoTitleBar">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.HOME" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
|
|
<activity
|
|
android:name=".PinRequestActivity"
|
|
android:exported="true"
|
|
android:excludeFromRecents="true"
|
|
android:taskAffinity="${applicationId}.pin"
|
|
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
|
|
<intent-filter>
|
|
<action android:name="android.content.pm.action.CONFIRM_PIN_SHORTCUT" />
|
|
<action android:name="android.content.pm.action.CONFIRM_PIN_APPWIDGET" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<activity
|
|
android:name=".input.ControllerEditorActivity"
|
|
android:exported="false"
|
|
android:theme="@style/SessionTheme"
|
|
android:screenOrientation="sensorLandscape"
|
|
android:resizeableActivity="true"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|keyboard|keyboardHidden|navigation|uiMode|density" />
|
|
|
|
<activity
|
|
android:name=".sync.SyncthingWebActivity"
|
|
android:exported="false"
|
|
android:screenOrientation="sensorLandscape"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|density"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity
|
|
android:name=".files.FileManagerActivity"
|
|
android:exported="false"
|
|
android:screenOrientation="user"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|density"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity
|
|
android:name=".files.FilePickerActivity"
|
|
android:exported="false"
|
|
android:screenOrientation="user"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|density"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity android:name=".stores.xbox.XboxLoginActivity" android:exported="false"
|
|
android:process=":xboxlogin" android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|density"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity android:name=".stores.xbox.XboxCloudPlayerActivity" android:exported="false"
|
|
android:screenOrientation="sensorLandscape" android:hardwareAccelerated="true"
|
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|density|navigation|uiMode"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<service android:name=".stores.xbox.XboxCloudTokenService" android:exported="false" />
|
|
|
|
<activity android:name=".stores.xbox.XboxNativePlayerActivity" android:exported="false"
|
|
android:process=":xcloudnative" android:screenOrientation="sensorLandscape" android:hardwareAccelerated="true"
|
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|density|navigation|uiMode"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity android:name=".stores.xbox.XboxCloudActivity" android:exported="false"
|
|
android:process=":xboxcloud" android:launchMode="singleTop" android:screenOrientation="sensorLandscape"
|
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|density|navigation|uiMode"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity android:name=".stores.xbox.XboxCloudSettingsActivity" android:exported="false"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|density"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity
|
|
android:name=".stores.StoreLoginActivity"
|
|
android:exported="false"
|
|
android:screenOrientation="user"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|density"
|
|
android:theme="@style/AppTheme" />
|
|
|
|
<activity
|
|
android:name=".agent.AgentStartActivity"
|
|
android:exported="true"
|
|
android:excludeFromRecents="true"
|
|
android:noHistory="true"
|
|
android:permission="android.permission.DUMP"
|
|
android:theme="@style/SessionTheme" />
|
|
|
|
<activity
|
|
android:name=".SessionActivity"
|
|
android:exported="false"
|
|
android:supportsPictureInPicture="true"
|
|
android:launchMode="singleTask"
|
|
android:theme="@style/SessionTheme"
|
|
android:preferMinimalPostProcessing="true"
|
|
android:screenOrientation="sensorLandscape"
|
|
android:resizeableActivity="true"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|keyboard|keyboardHidden|navigation|uiMode|density" />
|
|
|
|
<activity
|
|
android:name=".ui.DualScreenActivity"
|
|
android:exported="false"
|
|
android:excludeFromRecents="true"
|
|
android:taskAffinity="${applicationId}.dualscreen"
|
|
android:theme="@style/SessionTheme"
|
|
android:resizeableActivity="true"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|keyboard|keyboardHidden|navigation|uiMode|density" />
|
|
|
|
<activity
|
|
android:name=".ui.SessionTypingActivity"
|
|
android:exported="false"
|
|
android:excludeFromRecents="true"
|
|
android:noHistory="true"
|
|
android:taskAffinity="${applicationId}.typing"
|
|
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
|
|
android:resizeableActivity="true"
|
|
android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|keyboard|keyboardHidden|navigation|uiMode|density" />
|
|
|
|
<activity
|
|
android:name=".gpu.SteamVrRestartActivity"
|
|
android:exported="false"
|
|
android:process=":vr_recovery"
|
|
android:taskAffinity="${applicationId}.vr_recovery"
|
|
android:excludeFromRecents="true"
|
|
android:screenOrientation="sensorLandscape"
|
|
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|keyboard|keyboardHidden|navigation|uiMode|density"
|
|
android:theme="@style/SessionTheme" />
|
|
|
|
<service
|
|
android:name=".session.SessionService"
|
|
android:exported="false"
|
|
android:stopWithTask="false" />
|
|
<!-- The compositor's native state is one per process, so the bottom-screen desktop's compositor runs in its own. -->
|
|
<service
|
|
android:name=".wayland.BottomDesktopCompositorService"
|
|
android:process=":bottom_desktop"
|
|
android:exported="false" />
|
|
<service
|
|
android:name=".runtime.RuntimeInstallService"
|
|
android:exported="false" />
|
|
<service
|
|
android:name=".core.WirelessAdbPairingService"
|
|
android:exported="false" />
|
|
<service
|
|
android:name=".stores.download.StoreDownloadService"
|
|
android:exported="false"
|
|
android:foregroundServiceType="dataSync" />
|
|
<service
|
|
android:name=".sync.SyncthingService"
|
|
android:exported="false"
|
|
android:foregroundServiceType="dataSync" />
|
|
<provider
|
|
android:name="androidx.core.content.FileProvider"
|
|
android:authorities="${applicationId}.logs"
|
|
android:exported="false"
|
|
android:grantUriPermissions="true">
|
|
<meta-data
|
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
|
android:resource="@xml/log_share_paths" />
|
|
</provider>
|
|
<provider
|
|
android:name=".files.AppFilesProvider"
|
|
android:authorities="${applicationId}.documents"
|
|
android:exported="true"
|
|
android:grantUriPermissions="true"
|
|
android:permission="android.permission.MANAGE_DOCUMENTS">
|
|
<intent-filter>
|
|
<action android:name="android.content.action.DOCUMENTS_PROVIDER" />
|
|
</intent-filter>
|
|
</provider>
|
|
<provider
|
|
android:name=".agent.AgentBridgeProvider"
|
|
android:authorities="${applicationId}.agent"
|
|
android:exported="true"
|
|
android:permission="android.permission.DUMP"
|
|
android:grantUriPermissions="false" />
|
|
<activity android:name=".ui.SpatialTrackingActivity" android:exported="false" />
|
|
<service
|
|
android:name="com.google.android.datatransport.runtime.backends.TransportBackendDiscovery"
|
|
tools:node="merge">
|
|
<meta-data
|
|
android:name="backend:com.google.android.datatransport.cct.CctBackendFactory"
|
|
tools:node="remove" />
|
|
</service>
|
|
</application>
|
|
</manifest>
|