summaryrefslogtreecommitdiff
path: root/Source/Android/app
AgeCommit message (Collapse)Author
2025-11-16Android: Convert NativeLibrary to KotlinSimonx22
2025-11-16Merge pull request #14104 from Simonx22/android/remove-extract-native-libsJosJuice
Android: Remove deprecated extractNativeLibs manifest flag
2025-11-16Android: Rate limit refreshInputOverlay calls from slidersJosJuice
Sliders can trigger change listeners very rapidly, so let's add some rate limiting so dragging a slider doesn't cause the whole UI to lag. (Now the input overlay looks laggy when dragging a slider, though.)
2025-11-16Android: Treat EmulationActivity dialog dismiss the same as OKJosJuice
In the dialog where you can choose what controller the input overlay should be controlling, there's an OK button. If you change controller but don't press OK, your selection will be saved, but the input overlay won't refresh to show the new controller unless you perform some other action that would cause it to refresh. This is not good UX. This commit changes the behavior not only of this dialog but also other dialogs spawned by EmulationActivity so that everything is properly updated when dismissing a dialog, as if you had pressed OK.
2025-11-16Merge pull request #13992 from JosJuice/android-register-for-activity-resultJosJuice
Android: Replace deprecated startActivityForResult
2025-11-12Android: Remove unused BiMap classSimonx22
2025-11-11Merge pull request #14098 from Simonx22/android/dolphin-application-kotlinJMC47
Android: Convert DolphinApplication to Kotlin
2025-11-11Android: Update dependenciesSimonx22
Note: This also updates Kotlin to 2.2.21 which requires small adjustments in our Kotlin code.
2025-11-11Android: Convert NetworkHelper to KotlinSimonx22
2025-11-11Android: Replace deprecated startActivityForResultJosJuice
2025-11-11Android: Remove deprecated extractNativeLibs manifest flagSimonx22
extractNativeLibs is deprecated. Native lib packaging is already controlled by packaging.jniLibs.useLegacyPackaging (which we already have), so the manifest override is unnecessary.
2025-11-10Android: Keep main toolbar pinned on game gridSimonx22
Prevents the version/build bar from sliding behind the status bar when scrolling so the time and build info remain readable instead of overlapping.
2025-11-09Android: Convert DolphinApplication to KotlinSimonx22
2025-11-09Android: Prevent dismissing the System Update dialog by tapping outsideSimonx22
Tapping outside the System Update dialog would previously close it and leave the update in a partially canceled, inconsistent state. This change disables outside-touch dismissal to avoid accidental interruptions and ensure the process completes cleanly.
2025-11-08Android: Clear listener in SwitchSettingViewHolderJosJuice
If bind was called more than once for a SwitchSettingViewHolder, the line `binding.settingSwitch.isChecked = setting.isChecked` would accidentally trigger the listener registered during the previous bind call.
2025-11-08Merge pull request #14047 from Simonx22/reset-all-dolphin-settings-androidOatmealDome
Android: Add Reset Dolphin Settings functionality
2025-11-08Merge pull request #14077 from Simonx22/android-alert-message-kotlinOatmealDome
Android: Convert AlertMessage dialog to Kotlin
2025-11-08Android: Convert AlertMessage dialog to KotlinSimonx22
2025-11-08Android: Use the shared HTTP analytics backendSimonx22
We can now route Android analytics through Common::HttpAnalyticsBackend, drop the Volley sender, and keep the JNI layer limited to only transfer metadata since https://bugs.dolphin-emu.org/issues/11772 has been fixed.
2025-11-07Android: Replace Action1 helper with Kotlin lambdaSimonx22
2025-11-02Android: Add Reset Dolphin Settings functionalitySimonx22
2025-11-01Merge pull request #13655 from JosJuice/android-always-expand-sheetsJosJuice
Android: Expand bottom sheets on devices with touch too
2025-10-30Android: Expand bottom sheets on devices with touch tooJosJuice
In a few places in Dolphin, we're using BottomSheetDialogFragments. These unhelpfully tend to start out in a "collapsed" state when in landscape mode (presumably depending on factors like screen size). The user then has to manually expand them before they can meaningfully interact with them. We've been automatically setting BottomSheetDialogFragments to the expanded state if the device Dolphin is running on doesn't support touch, since with d-pad navigation it's impossible to expand these sheets. But I think we should set them to expanded on devices that support touch too. I haven't encountered a single case where you can do anything useful with any of Dolphin's BottomSheetDialogFragments while they're collapsed, so the user always has to expand sheets manually if they start out collapsed. And just because a device supports touch doesn't necessarily mean you're interacting with it through the touch screen right now - you could be using a gamepad, for instance.
2025-10-29Android: Save settings instantly after editsSimonx22
2025-10-15Android: Update NDK version to 29.0.14206865JosJuice
2025-09-28Merge pull request #13260 from JosJuice/android-gcadapter-hotplug-callbackJMC47
Android: Detect GCAdapter hotplug using BroadcastReceiver
2025-08-26Android: Set Dolphin documents' root supports testing parent child ↵Marocco2
relationships. Adds `DocumentsContract.Root.FLAG_SUPPORTS_IS_CHILD` to the list of the flags in order to show up for third-party apps for easier file syncing with local/cloud file server providers
2025-08-25Android: Set Dolphin documents as Local onlyMarocco2
Adds `DocumentsContract.Root.FLAG_LOCAL_ONLY` to the list of the flags in order to show up for third-party apps for easier file syncing with local/cloud file server providers
2025-08-05Merge pull request #13841 from JosJuice/android-opt-out-backJosJuice
Android: Opt out of back invoked callback
2025-08-01Merge pull request #13829 from JosJuice/android-retroachievements-pause-overrideAdmiral H. Curtiss
Android: Don't let RetroAchievements override onPause
2025-08-01Android: Opt out of back invoked callbackJosJuice
When 9d9b6d8 changed our target SDK version to Android 16, it made Android 16 stop calling onBackPressed and stop delivering KEYCODE_BACK events. Dolphin's code isn't ready for that yet. Android lets us opt out of this new behavior for now, so let's do so. But the opt-out will presumably stop working once we start targeting Android 17, so we're going to have to update Dolphin's code within the next one or two years to support the replacement API.
2025-07-27Android: Add additional null check in GCAdapterJosJuice
Just in case, since the documentation says this could be null.
2025-07-27Android: Detect GCAdapter connection using BroadcastReceiverJosJuice
We can register a BroadcastReceiver to have Android tell us when a GC adapter gets connected instead of having a loop where we continuously call SleepCurrentThread(1000) and poll the current status. When waiting for a GC adapter to connect, this both reduces power usage and improves responsiveness. Note that I made openAdapter get the UsbDevice that's been stored by the hotplug code instead of having openAdapter find the UsbDevice on its own like before. This is only because I want to ensure that the UsbDevice being tracked for disconnection is the same as the UsbDevice actually being used, in case the user has multiple adapters connected.
2025-07-27Android: Clean up naming in Java_GCAdapter and Java_WiimoteAdapterJosJuice
This isn't how we name things in Java/Kotlin.
2025-07-26Android: Don't let RetroAchievements override onPauseJosJuice
When Android sends Dolphin to the background, emulation *must* pause, otherwise emulation continues running and continues outputting audio to the user. RetroAchievements mustn't be allowed to override it.
2025-07-26Merge pull request #13789 from Simonx22/update-sdk36-gradle813JosJuice
Android: Bump SDK to 36 and Gradle to 8.13
2025-07-24Android: Bump SDK to 36 and Gradle to 8.13Simon
Starting August 31, 2025, targeting at least Android 15 (API level 35) will be required: https://support.google.com/googleplay/android-developer/answer/11926878 This commit sets the target SDK to API level 36 (Android 16), the latest available version.
2025-07-20Merge pull request #13674 from JosJuice/android-visualize-inputJordan Woyak
Android: Show input indicators in controller settings
2025-06-07Merge pull request #12836 from JosJuice/opensles-buffer-sizeJMC47
Android: Ask system for optimal audio buffer size and sample rate
2025-06-07Android: Update advanced mapping dialog when devices changeJosJuice
Without this, there was a bug where if you turned the device's screen off and on again while in the advanced mapping dialog, the input indicators would stop updating. This is because turning the screen on again causes devices to refresh, which causes all devices to be recreated, leaving the AdvancedMappingControlViewHolders stuck referencing controls belonging to devices that are no longer being updated.
2025-06-07Android: Show input indicators in controller settingsJosJuice
2025-06-07Android: Set parent when inflating RecyclerView.ViewHoldersJosJuice
This makes sure view holders get proper widths when they use layout_width="match_parent". This becomes quite noticeable for AdvancedMappingControlAdapter in the next commit, but I'm also making the change for other adapters while I'm at it.
2025-06-07Android: Make input mapping view holders observe input state changesJosJuice
2025-06-07Android: Pass CoreDevice.Control to AdvancedMappingControlViewHolderJosJuice
2025-06-07Android: Make AdvancedMappingControlViewHolder a LifecycleOwnerJosJuice
2025-06-07Android: Make SettingViewHolder a LifecycleOwnerJosJuice
2025-06-07Android: Make input state changes observableJosJuice
2025-06-04Android: Add android.hardware.microphone to manifestJosJuice
Google Play is now blocking distribution for Android TV unless we explicitly set the android.hardware.microphone hardware feature as android:required="false", because it's inferring android.hardware.microphone from the android.permission.RECORD_AUDIO we added for Wii Speak emulation, with android:required defaulting to true. I was under the belief that setting android:required="false" on android.permission.RECORD_AUDIO would solve this, but looking closer at the definition of <uses-permission>, it doesn't actually support android:required attributes, so that presumably has no effect.
2025-05-25Android: Ask system for optimal audio buffer size and sample rateJosJuice
This can reduce audio latency according to https://developer.android.com/ndk/guides/audio/opensl/opensl-prog-notes#perform. Previously we were using the hardcoded values of 48000 Hz and 256 frames per buffer. The sample rate we use with this change is 48000 Hz on all devices I'm aware of, but the buffer size does vary across devices. Terminology note: The old code used the term "sample" to refer to what Android refers to as a "frame". "Frame" is a clearer term to use for this, so I've changed OpenSLESStream's terminology. One frame consists of one sample per channel.
2025-05-21Merge pull request #12769 from sepalani/wii-speakJMC47
IOS/USB: Emulate Wii Speak using cubeb