summaryrefslogtreecommitdiff
path: root/Source/Android
AgeCommit message (Collapse)Author
6 daysReplace string concatination with `fmt::format`Dr. Dystopia
11 daysCMake: Bump minimum requirement to 3.25Joshua Vandaële
2026-07-13Scaffold / Appbar composableTom Pratt
Custom composable that switched between compact and medium size app bar depending on a combination of orientation and screen size. (Small app bar when horizontal on small devices, medium app bar otherwise. Medium app bar supports collapse on scroll.
2026-07-13Merge pull request #14728 from Simonx22/android/api37-ndk30-dependency-updatesOatmealDome
Android: Update dependencies and build tools
2026-07-13Merge pull request #14630 from Simonx22/android/convert-contenthandler-to-kotlinOatmealDome
Android: Convert ContentHandler to Kotlin and fix warnings
2026-07-12Android: Update dependencies and build toolsSimonx22
Update Android dependencies and build tools to their latest available versions. Rename the GameCube save magic constant to avoid a collision with the NDK 30 ARM64 signal context header.
2026-07-11Android: Update description for Enable Emulated Memory Size Override.cristian64
2026-07-11Android: Convert ContentHandler to Kotlin and fix warningsSimonx22
2026-07-09Merge pull request #14716 from tom-pratt/chat-message-coloursDentomologist
Android: Coloured netplay chat messages
2026-07-08Merge pull request #14702 from JosJuice/android-vibration-usageDentomologist
Android: Set USAGE_MEDIA for rumble
2026-07-08Android: Silence deprecation warnings in ControllerInterfaceJosJuice
We have to use the deprecated APIs when running on old devices.
2026-07-07Android: Coloured netplay chat messagesTom Pratt
2026-07-05Merge pull request #14689 from JosJuice/android-internal-resolution-displayDentomologist
VideoCommon: Use XFB for internal resolution stats
2026-07-05Merge pull request #14619 from JosJuice/no-si-change-deviceJosJuice
Core: Remove SerialInterfaceManager::ChangeDevice
2026-07-05Merge pull request #14623 from Simonx22/android/convert-eglhelper-to-kotlinJosJuice
Android: Convert EGLHelper to Kotlin
2026-07-05Merge pull request #14624 from ↵JosJuice
Simonx22/android/convert-filebrowserhelper-to-kotlin Android: Convert FileBrowserHelper to Kotlin
2026-07-05Android: Set USAGE_MEDIA for rumbleJosJuice
This lets rumble work even if the user has turned off the Android setting Sound and vibration > Vibration and haptics > Interactive haptics > Touch feedback. Rumble can still be disabled through Dolphin's controller bindings and through in-game settings (GameCube) or SYSCONF (Wii).
2026-07-05Rename "Show Internal Resolution" to "Show XFB Resolution"JosJuice
To make it extra clear that this is measuring the XFB, not the EFB.
2026-07-05Android: Add missing graphics debug settingsJosJuice
These are available in DolphinQt, so let's make them available in the Android GUI too.
2026-06-29Android: Fix release buildJosJuice
We don't need to see Compose previews when making a release build, but androidx.compose.ui.tooling.preview.Preview is referenced in the source code nonetheless, so the build system needs to know what it is.
2026-06-28Merge pull request #14647 from tom-pratt/netplayJMC47
Android netplay
2026-06-28Core: Remove SerialInterfaceManager::ChangeDeviceJosJuice
Now SerialInterfaceManager::UpdateDevices reads the configured SI devices directly from Config instead. The main reason why I wanted to do this is so that Android can change SI devices while emulation is running. (Android didn't have the code for calling ChangeDevice.) But when implementing the change, I noticed that NetPlay and Movie were using ChangeDevice as a way of overriding the SI devices configured by the user. Replacing this ended up making the change larger than I first anticipated. For Wii Remotes, there was no equivalent to ChangeDevice, so NetPlay and Movie were using Config::SetCurrent to override the Wii Remote source configured by the user. If we can use the config system to override Wii Remote sources, why not do the same for SI devices? This commit makes NetPlay and Movie set SI devices and Wii Remote sources in the NetPlay and Movie config layers, as that is the conceptually appropriate place to do it. As far as I can tell, the old Movie code for overriding SI devices and Wii Remote sources didn't actually work. This new code does. I didn't investigate exactly why it didn't work, but maybe it's because loading a movie happens before emulation actually starts.
2026-05-25Merge pull request #14631 from ↵Dentomologist
Simonx22/android/convert-directoryinitialization-to-kotlin Android: Convert DirectoryInitialization to Kotlin
2026-05-23Merge pull request #14506 from adamscott/crop-that-screenAdmiral H. Curtiss
Add screen crop feature
2026-05-19lint formattingTom Pratt
2026-05-19Fix NetplayScreen edge to edgeTom Pratt
NetplayScreen was not drawing under the bottom nav bar like other screens. In landscape mode half of the screen scrolls and half is fixed, to make this look natural with edge to edge, provide a fade on the bottom of the scrolling side so things look natural when the screens loads and is resting at 0 scroll offset.
2026-05-19Replace hardcoded save progress stringTom Pratt
2026-05-19Use the dual pane netplay screen layout only if the width is sufficientTom Pratt
To avoid using dual pane layout on very small devices, ensure that the current width available for display is at least medium (600dp). It also has to be landscape, the dual pane mode looks weird on a tablet in portrait mode since there's not that much content.
2026-05-19WithSession helper functionTom Pratt
Handles the repeated boiler plate of using a weak reference to NetplaySession from NetplayUICallbacks
2026-05-19Pass immutable games list to NetplayUICallbacksTom Pratt
Remove corresponding jni config. Rename Netplay to NetplaySession in jni config to match new kotlin name.
2026-05-19Use unique_ptr when creating netplay client / serverTom Pratt
2026-05-19Add @Keep annotation to Player constructorTom Pratt
Since it's only instantiated from c++.
2026-05-19Fix netplay license headersTom Pratt
2026-05-19Update compose dependenciesTom Pratt
Was using 2025 instead of 2026! Fixed some buggy bottom sheet behaviour. Minor tidying of the chat UI in the bottom sheet
2026-05-19Implement DoAllPlayersHaveGame() checkTom Pratt
2026-05-19Add network mode picker for hostTom Pratt
2026-05-19Add host buffer settings for fair input delay modeTom Pratt
Also rename max buffer to client buffer for better consistency with settings and c++
2026-05-19Handle traversal state changes and errorsTom Pratt
Traversal connections show in the joining info UI. Non fatal errors show the retry button. Fatal errors end the netplay session.
2026-05-19Show joining info for local and external IP addressesTom Pratt
Doesn't support traversal yet
2026-05-19Add ability to choose game when hostingTom Pratt
Also fix bottom sheets so they survive rotation
2026-05-19Send own messages to chatTom Pratt
A player's own messages don't come back via the server.
2026-05-19Create NetPlayServer and start gameTom Pratt
2026-05-19Hosting UITom Pratt
2026-05-19Implement OnMsgPowerButtonTom Pratt
2026-05-19Game digest progress dialogTom Pratt
We just about get away with using a StateFlow in NetplaySession since the host sends AbortGameDigest when closing their own dialog. Without that it would be harder for the UI to distinguish between subsequent dialogs. If that wasn't the case then NetplaySession might need to expose the individual progress and result updates and have the view model assemble it into the overall GameDigestProgress.
2026-05-19Handle desync messagesTom Pratt
Show them in the chat window and also in a toast during game play.
2026-05-19Make NetplaySession not a singletonTom Pratt
Create a new NetplaySession each time we try to join a netplay game. Hold onto it in NetplayManager so its available to the different activities that need to access it. Close the session when backing out of the netplay UI. Some guardrails in case things go out of sync: creating a session closes the old one if it is still around for some reason, finalizer in NetplaySession to release native resources if not closed explicitly for some reason. Profiling done to ensure all kotlin and native objects are successfully cleared / garbage collected.
2026-05-19Use existing settings API instead of custom jni callsTom Pratt
2026-05-19Show save transfer progressTom Pratt
When transferring saves from the host. Equivalent of ChunkedProgressDialog in QT.
2026-05-19Dont try to load temporary save states when launching netplayTom Pratt
An orientation change can trigger this code path immediately when a game starts. e.g. dolphin is portrait when launching the game but settings force gameplay to landscape. We want to avoid this and continue to the netplay launch code below. If the user backgrounds dolphin during netplay and then resumes after the process has died it will actually resume from the save state in single player mode, not sure if thats good or bad but fine for now. Netplay doesnt handle rotation very well, seems to go more and more out of sync the more rotations.