summaryrefslogtreecommitdiff
path: root/Source/Android
AgeCommit message (Collapse)Author
2021-12-14Android: Fix opening system file managerJosJuice
Turns out that most phones ship with a special Google version of DocumentsUI instead of just using the AOSP version, despite the two being pretty similar as far as I can tell. This change makes us check for both package names instead of just the AOSP package name.
2021-12-14Android: Rework intent handling to work under scoped storageJosJuice
2021-12-12GameList: Show game mod descriptor .json files in game list.Admiral H. Curtiss
2021-11-23Merge pull request #10235 from AdmiralCurtiss/netplay-save-sync-bootLéo Lam
Netplay: Fix possible Wii save restore race condition between Netplay and CPU threads on game shutdown by making the Wii Save Sync data part of the BootParameters.
2021-11-21Merge pull request #10231 from JosJuice/android-dir-init-livedataMai M
Android: Make DirectoryInitialization use LiveData
2021-11-22Core/Boot: Refactor storage of boot-to-savestate data into a separate class.Admiral H. Curtiss
2021-11-21Merge pull request #10232 from JosJuice/android-minifyMai M
Android: Enable R8 code shrinking
2021-11-21Android: Add MMU setting to GUIJosJuice
Now that we have fast MMU emulation on AArch64, there's no reason to keep excluding this from the GUI like we've been doing.
2021-11-19Android: Make rescan on app start work againJosJuice
I haven't fully confirmed why the previous commit broke this, but I imagine it's due to AfterDirectoryInitializationRunner executing in a different order than before, resulting in startRescan running before startLoad.
2021-11-19Android: Make DirectoryInitialization use LiveDataJosJuice
Gets rid of all remaining uses of the deprecated LocalBroadcastManager.
2021-11-19Android: Enable R8 code shrinkingJosJuice
This decreases our APK size by a few megabytes. Most of the reduction is from Java libraries that we only use small parts of. Code shrinking gets rid of all the unused code from these libraries from the APK. Because I highly value the ability to get stack traces that make sense, I have specifically disabled obfuscation (automatic renaming of symbols to short incomprehensible names). I've only enabled code shrinking for release builds, purely because I feel like the extra build time (30 seconds on my machine) would be annoying when you want to make debug builds rapidly.
2021-11-18Merge pull request #9956 from Pokechu22/non-power-of-2-wrap-2JMC47
VideoCommon: Manually handle texture wrapping and sampling
2021-11-17Use Fast Texture Sampling by defaultPokechu22
This commit changes the default value of Fast Texture Sampling to true, and also moves the setting that controls it to the experimental section of the advanced tab. This is its own commit so that it can be easily reverted when we want to default to Manual Texture Sampling. Co-authored-by: JosJuice <josjuice@gmail.com>
2021-11-17VideoCommon: Add option to use old behavior (Fast Texture Sampling)Pokechu22
Co-authored-by: JosJuice <josjuice@gmail.com>
2021-11-17Android: Make GameFileCacheManager use LiveData, part 2JosJuice
Gets rid some uses of the deprecated LocalBroadcastManager. One note about the changes in GameFileCacheManager itself: The change from compareAndSet to getValue followed by setValue is actually safe, because startLoad and startRescan only run from the main thread, and only the main thread ever sets the flags to true. So it's impossible for any other thread to change the flag in between the getValue and the setValue.
2021-11-17Android: Make GameFileCacheManager use LiveData, part 1JosJuice
2021-11-16Merge pull request #10225 from JosJuice/android-game-settings-titleMai M
Android: Properly set game settings title when navigating backwards
2021-11-16Android: Properly set game settings title when navigating backwardsJosJuice
2021-11-16Android: Make GameFileCacheService not be a serviceJosJuice
The past few Android releases have been adding restrictions to what services are allowed to do, for the sake of stopping services from using up too much battery in the background. The IntentService class, which GameFileCacheService uses, was even deprecated in Android 11 in light of this. Typically, the reason why you would want use a service instead of using a simple thread or some other concurrency mechanism from the Java standard library is if you want to be able to run code in the background while the user isn't using your app. This isn't actually something we care about for GameFileCacheService -- if Android wants to kill Dolphin there's no reason to keep GameFileCacheService running -- so let's make it not be a service. I'm changing this mainly for the sake of future proofing, but there is one immediate (minor) benefit: Previously, if you tried to launch Dolphin from Android Studio while your phone was locked, the whole app would fail to launch because launching GameFileCacheService wasn't allowed because Dolphin wasn't considered a foreground app.
2021-11-16Android: Split up GameFileCacheService.onHandleIntentJosJuice
2021-11-15Android: Remove DirectoryInitialization from AndroidManifest.xmlJosJuice
It isn't a service, so it shouldn't be listed as one.
2021-11-14Android: Increase targetSdkVersion to 31 (Android 12)JosJuice
Unlike with Android 11, there should be no downsides to doing this, so we might as well get this out of the way early. The main part of the work was already done in 5a1a642.
2021-11-13Android: Bump NDK and CMake versionsJosJuice
This should make C++20 and std::filesystem work. (Not that we really can use std::filesystem much on Android since it doesn't work with scoped storage...)
2021-10-30Android: Show SD root path in Riivolution activityJosJuice
2021-10-30Android: Add Riivolution patch configurationJosJuice
2021-10-30Android: Allow starting game with Riivolution patches from the GUIJosJuice
2021-10-24Merge pull request #10185 from JosJuice/android-fragileLéo Lam
Android: Set android:hasFragileUserData
2021-10-24Android: Set android:hasFragileUserDataJosJuice
This makes Android ask the user whether they want to delete user data when uninstalling the app instead of always deleting user data, which is pretty great now that we're forced to use scoped storage. It only works on Android 10 and up, though.
2021-10-24Convert LOG_TYPE and LOG_LEVELS to enum classPokechu22
2021-10-20Android: Adjust string about file manager apps on Android 11JosJuice
When I made 9c8bb24, I assumed it was completely impossible for a non-preloaded app to access the entirety of the Android/data/ folder on Android 11. This turned out to be false. While you can't access the directory without using SAF (even if you have the Manage All Files permission), and the user can't navigate to the folder using the SAF folder picker, what you can do is pass the Android/data/ folder as an EXTRA_INITIAL_URI to the SAF folder picker. If the user then presses "use this folder" without navigating out of the folder, the app will be able to access the folder using SAF. So what does that mean for Dolphin? It means scoped storage is a little less bad than I feared, and I have a string to adjust.
2021-10-15Turn MAX_LOGLEVEL into a true constant (and fix self-comparison warning)Léo Lam
This replaces the MAX_LOGLEVEL define with a constexpr variable in order to fix self-comparison warnings in the logging macros when compiling with Clang. (Without this change, the log level check in the logging macros is expanded into something like this: `if (LINFO <= LINFO)`, which triggers a tautological compare warning.)
2021-10-15Merge pull request #9696 from JosJuice/android-scoped-storageJosJuice
Android: Scoped storage [To be merged in October]
2021-10-13Android: Improve OpenModeToAndroid's handling of 'b'JosJuice
Now it also works when b isn't at the very end. (+ goes after b.)
2021-10-04Android: Add the advanced graphics settings to the GUIJosJuice
2021-10-02DolphinQt/Android: Add warning when converting NKit filesJosJuice
Yes, that's right! It's time to add even more NKit warnings, because users still don't understand what NKit is or how it works! More specifically, some users seem to be under the impression that converting an NKit file to for instance RVZ using Dolphin's convert feature will result in a normal RVZ file, when it in fact results in an NKit RVZ file (since NKit is not a container format in the sense that GCZ/WIA/RVZ/WBFS/CISO is, but rather a kind of trimmed ISO). I can hardly blame users for not knowing this, because it's not intuitive unless you know the technical details of how NKit works.
2021-09-21Android: Remove the EmulationState classJosJuice
The purpose of this class was to keep track of state which the emulation core was already keeping track of. This is rather risky - if we update the state of one of the two without updating the other, the two become out of sync, leading to some rather confusing problems. This duplicated state was removed from EmulationState in the previous commits, so now there isn't much left in the class. Might as well move its members directly into EmulationFragment.
2021-09-21Android: Remove synchronized keywords from EmulationStateJosJuice
These methods are only being called from the GUI thread anyway...
2021-09-21Android: Don't rely on onPause for pausing before destroying surfaceJosJuice
Fixes a crash which was uncovered (or just made more likely?) by the previous commit.
2021-09-21Android: Remove state from EmulationStateJosJuice
2021-09-21Android: Remove mSurface from EmulationStateJosJuice
2021-09-18Android: Show confirmation dialog for clearing game settingsJosJuice
2021-09-16Android: Add button for opening system file managerJosJuice
Apparently some phones (at least some from Samsung) don't expose the system file manager in the system settings despite it being the only on-device file manager that can open app-specific directories...
2021-09-16Android: Add a "user data" screenJosJuice
To make it clearer for users where Dolphin is storing user data, now that there's more than one possible place.
2021-09-16Android: Enable backup of external app-specific directoryJosJuice
2021-09-16Android: Increment targetSdkVersion to 30 (Android 11)JosJuice
This enables scoped storage for new Dolphin installs on Android 11 and up (along with a few other changes in behavior which unlike scoped storage are uncontroversial). Existing installs are unaffected. We have to do this in order to be able to release updates on Google Play from November 2021 and on.
2021-09-16Android: Show a dialog for scoped storage incompatible settingsJosJuice
The following settings are currently not SAF compatible, and might never be due to the performance impact: Dump Path Load Path Resource Pack Path Wii NAND Root This commit makes us show a message to the user if they try to change one of these settings while scoped storage is active. I don't want to entirely remove the settings from being listed in the settings activity, because it's important that the user is able to reset them if they were set to something custom in a previous version of Dolphin.
2021-09-16Android: Use app-specific directory as User folder by defaultJosJuice
This lets Dolphin function without the user granting access to external storage. We need this for scoped storage compatibility. When scoped storage is not active, we still ask for permission to access external storage the first time the app is started so that we can use the existing dolphin-emu folder if there is one. But if it doesn't exist, or the user denies the permission, or scoped storage is active, the app-specific directory will be used instead.
2021-09-16Android: Add save button to cheats activityJosJuice
By request. Matches the settings activity.
2021-09-16Android: Allow $ line when entering cheat codeJosJuice
Port of cda442d.
2021-09-16Android: Add Gecko code downloadingJosJuice