From b091d72548a89a96ea2ca4d8b9a3e05935640768 Mon Sep 17 00:00:00 2001 From: vanadium23 Date: Mon, 5 Sep 2022 20:47:29 +0300 Subject: [PATCH] feat: add fullscreen mode to android >= kitkat Closes #8532 --- frontend/device/android/device.lua | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/frontend/device/android/device.lua b/frontend/device/android/device.lua index d86a629c6..ccc93fdea 100644 --- a/frontend/device/android/device.lua +++ b/frontend/device/android/device.lua @@ -83,7 +83,7 @@ local Device = Generic:new{ home_dir = android.getExternalStoragePath(), display_dpi = android.lib.AConfiguration_getDensity(android.app.config), isHapticFeedbackEnabled = yes, - isDefaultFullscreen = function() return android.app.activity.sdkVersion >= 19 end, + isDefaultFullscreen = yes, hasClipboard = yes, hasOTAUpdates = android.ota.isEnabled, hasOTARunning = function() return android.ota.isRunning end, @@ -347,12 +347,27 @@ end -- to-do: implement fullscreen toggle in API19+ local function canToggleFullscreen() local api = android.app.activity.sdkVersion - return api < 19, api + return true, api end -- toggle fullscreen API 19+ function Device:_toggleFullscreenImmersive() - logger.dbg("ignoring fullscreen toggle, reason: always in immersive mode") + + local width = android.getScreenWidth() + local height = android.getScreenHeight() + -- NOTE: Since we don't do HW rotation here, this should always match width + local available_width = android.getScreenAvailableWidth() + local available_height = android.getScreenAvailableHeight() + + local is_fullscreen = android.isFullscreen() + logger.dbg(string.format("Change fullscreen to %s in _toggleFullscreenImmersive", not is_fullscreen)) + android.setFullscreen(not is_fullscreen) + self.fullscreen = android.isFullscreen() + if self.fullscreen then + self:setViewport(0, 0, width, height) + else + self:setViewport(0, 0, available_width, available_height) + end end -- toggle fullscreen API 17-18 @@ -413,7 +428,7 @@ end function Device:toggleFullscreen() local is_fullscreen = android.isFullscreen() - logger.dbg(string.format("requesting fullscreen: %s", not is_fullscreen)) + logger.dbg(string.format("requesting fullscreen: %s ___DEBUG___", not is_fullscreen)) local dummy, api = canToggleFullscreen() if api >= 19 then self:_toggleFullscreenImmersive()