Some of the recent reviews on Google Play express trouble finding the
emulation activity menu. One of them thought you were supposed to go
to the settings accessible through the main activity to configure the
virtual controller buttons.
This commit changes the text so that the user now explicitly is told to
swipe down from the top of the screen to access the menu. In exchange,
I removed the exact selections to make in the menu so that the text
wouldn't get too long, but I think it shouldn't be too hard to
understand once you know how to open the menu.
Delay the creation of the emulation fragment if: the device is a phone, if
emulation should be locked to landscape, and the current orientation is
portrait.
Forcing landscape at emulation start revealed a bug where if the activity was
recreated before emulation started then it would get stuck in a paused state
If emulation started in landscape then it wouldn't lock to landscape, thus
allowing a rotation to portrait then immediately back to landscape. Also
locking to landscape didn't need to be called from another thread, so that
was removed as well
Previously would take several seconds to save, sometimes causing ANRs, which
was made worse when adding all the controller values. Now we only load/save
each section instead of doing it for each setting. Also added a method
to save an individual setting.
Android can be funky with controller vibration. Of the three controlers I have that contain a
vibrator(PS3, Xbox360, 2017 Shield controller), only the Xbox360 controller registered as having
a vibrator. So YYMV depending on the driver support of the device.
With the nature of android updates invalidating save states, it's best to hide
these options unless enabled by the user. The option to use savestates can now
be enabled via the General settings menu.
Two reasons for this change. First, it appears that some android launchers do some sort of call into
the application when long pressing the app icon, which in turn calls the DirectoryInit service. This
was ok to do prior to Oreo but will cause crashes with the new restrictions on services running
in the background. Which leads to the second reason that DirectoryInit doesn't need to be a service
at all since these actions are required for dolphin to function and shouldn't be a scheduled action.
So we instead just kick this off in a new thread and send the broadcast when done.