summaryrefslogtreecommitdiff
path: root/Source/Android
AgeCommit message (Collapse)Author
2025-06-05Android: 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-21Merge pull request #12769 from sepalani/wii-speakJMC47
IOS/USB: Emulate Wii Speak using cubeb
2025-05-16Merge pull request #13654 from JosJuice/android-clear-without-dismissJMC47
Android: Don't dismiss AdvancedMappingDialog when pressing Clear
2025-05-12Android: Don't dismiss AdvancedMappingDialog when pressing ClearJosJuice
If you already have a mapping set in the advanced mapping dialog and want to change it, the easiest way to do it is to press Clear and then select the new mapping from the list. But pressing Clear causes the dialog to close, forcing you to open it again, which is inconvenient. This commit makes it so the Clear button doesn't close the dialog.
2025-05-12Merge pull request #13046 from SuperSamus/vi-overclockJMC47
Add VBI Frequency Override
2025-05-12Core: Add VBI Frequency OverrideMartino Fontana
This feature allows overriding the frequency of the Vertical Blank Interrupt. For many games, this means that their gameplay speed will change without affecting audio, which would be useful by itself (e.g. grinding in RPGs). However, there are games that use delta time for their game logic, which allows them to be played at >60 FPS at the same gameplay speed! Some games aren't dynamic though, and require a patch to adjust their game speed variable.
2025-05-07Merge pull request #13559 from tygyh/Android-Apply-style-alignment-refactoringsJosJuice
Android: Apply style alignment refactorings
2025-05-07Config: Rename MAIN_WII_SPEAK_CONNECTED to MAIN_WII_SPEAK_MUTEDSepalani
2025-05-07Android: Add emulated Wii SpeakSepalani
2025-05-02Android: Remove unused onSettingsFileNotFound and friendsJosJuice
Old cruft from when the Android code was loading INI files manually. We don't have any handling for failing to load settings anymore. This change also updates related comments to reflect how things actually work nowadays.
2025-05-01Merge pull request #13613 from JosJuice/android-ldrtl-list-item-mapping-idJMC47
Android: Fix incorrect ID in layout-ldrtl/list_item_mapping.xml
2025-05-01Merge pull request #13605 from JosJuice/android-cinit-nativeJMC47
Android: Don't call NativeLibrary methods during class init
2025-05-01Android: Fix incorrect ID in layout-ldrtl/list_item_mapping.xmlJosJuice
Probably a copy-paste error from layout-ldrtl/list_item_setting.xml. This error made it so a long setting name could overlap with the checkbox next to it if Dolphin was running with right-to-left layout. The incorrect ID was apparently also causing the app:lintVitalRelease build task to fail. I guess we're not running that build task, because I only heard of this from someone building Dolphin locally.
2025-04-28Android: Don't call NativeLibrary methods during class initJosJuice
There's no guarantee that directory initialization has completed by this point, so we can't safely use NativeLibrary. I'm making this change because of a crash being reported in Google Play Console. The exact way it's crashing is mysterious to me, so I'm not sure if this commit fixes the crash, but I think this commit is a reasonable change to make even if it doesn't fix the crash. Backtrace from Google Play Console: #00 pc 0x0000000000469074 /data/app/~~m0kqybFNfeqnDenQFc53XQ==/org.dolphinemu.dolphinemu-Mtaw0lU8DVUQbte2ZjBp3w==/lib/arm64/libmain.so (std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>>::pair[abi:nn180000]<char const* const&, char const* const&, 0>(char const* const&, char const* const&)) (BuildId: 64cfebf5b574b6729ebc51799aa94ccc3238cbcc) #01 pc 0x0000000000468e9c /data/app/~~m0kqybFNfeqnDenQFc53XQ==/org.dolphinemu.dolphinemu-Mtaw0lU8DVUQbte2ZjBp3w==/lib/arm64/libmain.so (std::__ndk1::pair<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>>, std::__ndk1::__tree_node<std::__ndk1::__value_type<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>>, void*>*, long>, bool> std::__ndk1::__tree<std::__ndk1::__value_type<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>>, std::__ndk1::__map_value_compare<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, std::__ndk1::__value_type<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>>, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>>>>::__emplace_unique_impl<char const* const&, char const* const&>(char const* const&, char const* const&)) (BuildId: 64cfebf5b574b6729ebc51799aa94ccc3238cbcc) #02 pc 0x0000000000462f08 /data/app/~~m0kqybFNfeqnDenQFc53XQ==/org.dolphinemu.dolphinemu-Mtaw0lU8DVUQbte2ZjBp3w==/lib/arm64/libmain.so (Common::Log::LogManager::GetLogTypes()) (BuildId: 64cfebf5b574b6729ebc51799aa94ccc3238cbcc) #03 pc 0x000000000044339c /data/app/~~m0kqybFNfeqnDenQFc53XQ==/org.dolphinemu.dolphinemu-Mtaw0lU8DVUQbte2ZjBp3w==/lib/arm64/libmain.so (Java_org_dolphinemu_dolphinemu_NativeLibrary_GetLogTypeNames+56) (BuildId: 64cfebf5b574b6729ebc51799aa94ccc3238cbcc) #04 pc 0x000000000031456c /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (art_jni_trampoline+108) #05 pc 0x0000000000781508 /apex/com.android.art/lib64/libart.so (nterp_helper+152) #06 pc 0x00000000002d94d4 /data/app/~~m0kqybFNfeqnDenQFc53XQ==/org.dolphinemu.dolphinemu-Mtaw0lU8DVUQbte2ZjBp3w==/base.apk (org.dolphinemu.dolphinemu.features.settings.ui.SettingsFragmentPresenter.<clinit>+16) [...]
2025-04-26Android: Allow reporting start to analytics for non-main activityJosJuice
a1691a4 made it so analytics start events can only be generated when starting the main activity. However, some users launch Dolphin's emulation activity from a separate frontend application, bypassing Dolphin's main activity. This change adjusts the logic so that start events can be generated if any activity is started after 6 hours of inactivity. This more closely matches the behavior we had before a1691a4, while still ensuring duplicate start events aren't generated. I've also fixed the inconsistent indentation in ActivityTracker.kt.
2025-04-25Merge pull request #13506 from JosJuice/android-time-playedTilka
Android: Show time played in game details
2025-04-22Android: Update platform enum valuesJosJuice
71f654c added a new platform in the middle of the C++ platform enum without updating the corresponding Android code, making the Android code incorrectly treat Wii discs as WAD files, WAD files as DOL/ELF files, and so on. This commit fixes the problem. To be able to add the new Triforce entry into the Platform enum without it leading to the UI getting an additional tab, I'm splitting the enum into Platform and PlatformTab. Platform now exactly matches the C++ enum (previously it excluded ELFOrDOL), and PlatformTab has the same content as the old Platform.
2025-04-22Android: Apply style alignment refactoringsDr. Dystopia
2025-04-21Adding support for detecting .bin imagesZopolis4
2025-04-19Prevent android generating duplicate analytics eventsShawn Hoffman
dolphin-start event was being generated twice for the normal end-user case, as can be seen in analytics data for some years. The problem occured when: * Android reaped the process hosting the dolphin activity (e.g. for power/memory saving). and * Dolphin activity was in "stopped" state for > 6 hours before being switched back to. Under above conditions, both calls to ReportStartToAnalytics would be performed, as dolphin thought it was being launched anew, and also thought it had been asleep for > 6 hours. fixes https://bugs.dolphin-emu.org/issues/13675
2025-04-19Android: Show time played in game detailsJosJuice
Unlike in DolphinQt, there isn't much space to show playtimes directly in the game list, so I've put it in the game details dialog instead.
2025-04-19Android: Create toggle for enabling/disabling time trackingJosJuice
2025-04-01Improve Performance of Granular Buffering + User Adjustable Buffer SizeSam Belliveau
2025-03-28Merge pull request #13434 from JosJuice/android-non-blocking-input-detectionJMC47
Android: Don't use separate thread for MotionAlertDialog
2025-03-27Android/Input: Fix a crash when mapping wii remote extensions.Jordan Woyak
2025-03-23Android: Show message when trying to map disconnected deviceJosJuice
Having the MotionAlertDialog immediately close is confusing for users. Let's show a message to tell them what went wrong.
2025-03-23Android: Don't use separate thread for MotionAlertDialogJosJuice
This is an Android continuation of bc95c00. We now call InputDetector::Update immediately after receiving an input event from Android instead of periodically calling it in a sleep loop. This improves detection of very short inputs, which are especially likely to occur for volume buttons on phones (or at least on my phone) if you don't intentionally keep them held down.
2025-03-23Merge pull request #13311 from ↵JMC47
iwubcode/dynamic_input_textures_reduce_image_writes Core / DolphinQt / InputCommon: reduce the number disk writes when using DynamicInputTextures
2025-03-22Core / DolphinQt / InputCommon: reduce the number disk writes when using ↵iwubcode
DynamicInputTextures
2025-03-15InputCommon/ControllerEmu: Break out functionality of EmulatedControllerJordan Woyak
to eliminate redundant unused members in Wii Remote extension objects.
2025-03-15Merge pull request #12866 from JosJuice/android-log-types-sortingJosJuice
Android: Replace log type names map with array
2025-03-15Merge pull request #13271 from dreamsyntax/gradle-wrapperJosJuice
Android: Upgrade AGP & Gradle
2025-03-14AudioCommon: Added Granular SynthesisSam Belliveau
2025-03-04Android: Upgrade AGP & Gradledreamsyntax
AGP 8.2.0 -> 8.9.0 Gradle and wrapper to 8.11.1 Baseline Profile plugin to 1.3.3
2025-02-20Merge pull request #13326 from nlebeck/taskviewmodel-mustrestartappJordan Woyak
Eliminate TaskViewModel's `mustRestartApp` field
2025-02-12DolphinQt: Rename the pack/unpack SD Card buttons.Jordan Woyak
2025-02-02Eliminate TaskViewModel's mustRestartApp fieldNiel Lebeck
Instead of having UserDataImportWarningDialog set an `onResultDismiss` callback that examines `mustRestartApp`, and having UserDataActivity set `mustRestartApp`, just have UserDataActivity set the callback directly. This approach is no more data-race-y than the previous approach, and it simplifies the code. (The behavior of restarting the app when the task finishes is specific to the user data import flow, and there is no reason for TaskViewModel to be directly aware of it.)
2025-01-12Clean up CRLF line endingsDaniel Peukert
2025-01-10Merge pull request #13030 from JosJuice/android-wait-for-surface-in-runAdmiral H. Curtiss
Android: Wait for surface in Run
2025-01-10Merge pull request #12864 from JosJuice/android-window-compatAdmiral H. Curtiss
Android: Replace deprecated setSystemUiVisibility
2025-01-08Merge pull request #13228 from OatmealDome/fix-curl-2Admiral H. Curtiss
curl: Update to 8.11.1 and use CMake to configure
2025-01-07GeckoCodeConfig: Remove HTTPS workaround for AndroidOatmealDome
2024-12-31Merge pull request #13235 from Gamer64ytb/vsync-fixAdmiral H. Curtiss
Android: Fix VSync option not working
2024-12-26Merge pull request #13116 from mitaclaw/ranges-modernization-8-trivial-ofJMC47
Ranges Algorithms Modernization - Of
2024-12-24Android: Fix VSync option not workingGamer64
It happened due to a typo from SECTION_GFX_HARDWARE
2024-12-20Merge pull request #13091 from mitaclaw/ranges-modernization-2-returnsJMC47
Ranges Algorithms Modernization - Return
2024-12-15Modernize `std::none_of` with rangesmitaclaw
In JitRegCache.cpp, the lambda predicate were replaced by a pointer to member function because ranges algorithms are able to invoke those. In ConvertDialog.cpp, the `std::mem_fn` helper was removed because ranges algorithms are able to handle pointers to member functions as predicates. In BoundingBox.cpp, the lambda predicate was returning the bool element unchanged, so `std::identity` was a better fit.
2024-11-15GDBStub: Signal Breakpoint Changes To Hostmitaclaw
2024-11-03VideoBackendBase: Clarify function nameDentomologist
Rename GetDefaultBackendName to GetDefaultBackendConfigName to distinguish it from the display name.
2024-10-30Merge pull request #13147 from mitaclaw/jit-block-table-model-fixJMC47
JitBlockTableModel: Catch All Block Invalidating Events (I Hope)