mirror of https://github.com/koreader/koreader
[Android] misc fixes (#4478)
* use product as device model * print android version (codename + number) + api at launch * exit the application properly * fix fullscreen switching (and disable it on newer android versions) * gettext: lower log level for message: cannot open translation file * android common settings refactorpull/4491/head
parent
81e160692d
commit
b15c2ed0c5
@ -0,0 +1,52 @@
|
|||||||
|
local isAndroid, android = pcall(require, "android")
|
||||||
|
local Device = require("device")
|
||||||
|
local Geom = require("ui/geometry")
|
||||||
|
local logger = require("logger")
|
||||||
|
local Input = Device.input
|
||||||
|
local Screen = Device.screen
|
||||||
|
|
||||||
|
if not isAndroid then return end
|
||||||
|
|
||||||
|
local ScreenHelper = {}
|
||||||
|
|
||||||
|
-- toggle android status bar visibility
|
||||||
|
function ScreenHelper:toggleFullscreen()
|
||||||
|
-- toggle android status bar visibility
|
||||||
|
local is_fullscreen = android.isFullscreen()
|
||||||
|
android.setFullscreen(not is_fullscreen)
|
||||||
|
logger.dbg(string.format("requesting fullscreen: %s", not is_fullscreen))
|
||||||
|
|
||||||
|
local screen_width = android.getScreenWidth()
|
||||||
|
local screen_height = android.getScreenHeight()
|
||||||
|
local status_bar_height = android.getStatusBarHeight()
|
||||||
|
local new_height = screen_height - status_bar_height
|
||||||
|
|
||||||
|
if not is_fullscreen and Screen.viewport then
|
||||||
|
status_bar_height = 0
|
||||||
|
-- reset touchTranslate to normal
|
||||||
|
Input:registerEventAdjustHook(
|
||||||
|
Input.adjustTouchTranslate,
|
||||||
|
{x = 0 + Screen.viewport.x, y = 0 + Screen.viewport.y})
|
||||||
|
end
|
||||||
|
|
||||||
|
local viewport = Geom:new{x=0, y=status_bar_height, w=screen_width, h=new_height}
|
||||||
|
logger.info(string.format("Switching viewport to new geometry [x=%d,y=%d,w=%d,h=%d]",
|
||||||
|
0, status_bar_height, screen_width, new_height))
|
||||||
|
|
||||||
|
Screen:setViewport(viewport)
|
||||||
|
|
||||||
|
if is_fullscreen and Screen.viewport then
|
||||||
|
Input:registerEventAdjustHook(
|
||||||
|
Input.adjustTouchTranslate,
|
||||||
|
{x = 0 - Screen.viewport.x, y = 0 - Screen.viewport.y})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- toggle android wakelock support
|
||||||
|
function ScreenHelper:toggleWakelock()
|
||||||
|
local is_wakelock = not G_reader_settings:isTrue("disable_android_wakelock")
|
||||||
|
android.setWakeLock(not is_wakelock)
|
||||||
|
G_reader_settings:saveSetting("disable_android_wakelock", is_wakelock)
|
||||||
|
end
|
||||||
|
|
||||||
|
return ScreenHelper
|
@ -1,47 +0,0 @@
|
|||||||
local isAndroid, android = pcall(require, "android")
|
|
||||||
local Device = require("device")
|
|
||||||
local Geom = require("ui/geometry")
|
|
||||||
local logger = require("logger")
|
|
||||||
local _ = require("gettext")
|
|
||||||
local Input = Device.input
|
|
||||||
local Screen = Device.screen
|
|
||||||
|
|
||||||
if not isAndroid then return end
|
|
||||||
|
|
||||||
return {
|
|
||||||
text = _("Fullscreen"),
|
|
||||||
checked_func = function()
|
|
||||||
return G_reader_settings:isFalse("disabled_fullscreen")
|
|
||||||
end,
|
|
||||||
callback = function()
|
|
||||||
local disabled_fullscreen = G_reader_settings:isTrue("disabled_fullscreen")
|
|
||||||
|
|
||||||
logger.dbg("screen_fullscreen_menu_table.lua: Fullscreen swiching to: ", disabled_fullscreen)
|
|
||||||
android.setFullscreen(disabled_fullscreen)
|
|
||||||
|
|
||||||
local status_bar_height = android.getStatusBarHeight()
|
|
||||||
logger.dbg("screen_fullscreen_menu_table.lua: Status bar height: ", status_bar_height)
|
|
||||||
local screen_width = android.getScreenWidth()
|
|
||||||
logger.dbg("screen_fullscreen_menu_table.lua: Screen width: ", screen_width)
|
|
||||||
local screen_height = android.getScreenHeight()
|
|
||||||
logger.dbg("screen_fullscreen_menu_table.lua: Screen height: ", screen_height)
|
|
||||||
|
|
||||||
local new_height = screen_height - status_bar_height
|
|
||||||
local viewport = Geom:new{x=0, y=status_bar_height, w=screen_width, h=new_height}
|
|
||||||
|
|
||||||
if not disabled_fullscreen and Screen.viewport then
|
|
||||||
-- reset touchTranslate to normal
|
|
||||||
Input:registerEventAdjustHook(
|
|
||||||
Input.adjustTouchTranslate,
|
|
||||||
{x = 0 + Screen.viewport.x, y = 0 + Screen.viewport.y})
|
|
||||||
end
|
|
||||||
Screen:setViewport(viewport)
|
|
||||||
if disabled_fullscreen then
|
|
||||||
Input:registerEventAdjustHook(
|
|
||||||
Input.adjustTouchTranslate,
|
|
||||||
{x = 0 - Screen.viewport.x, y = 0 - Screen.viewport.y})
|
|
||||||
end
|
|
||||||
|
|
||||||
G_reader_settings:saveSetting("disabled_fullscreen", not disabled_fullscreen)
|
|
||||||
end,
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
local isAndroid, android = pcall(require, "android")
|
|
||||||
local _ = require("gettext")
|
|
||||||
|
|
||||||
if not isAndroid then return end
|
|
||||||
|
|
||||||
local function isWakeLock()
|
|
||||||
return not G_reader_settings:isTrue("disable_android_wakelock")
|
|
||||||
end
|
|
||||||
|
|
||||||
local function setWakeLock(enable)
|
|
||||||
G_reader_settings:saveSetting("disable_android_wakelock", not enable)
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
|
||||||
text = _("Keep screen on"),
|
|
||||||
checked_func = function()
|
|
||||||
return isWakeLock()
|
|
||||||
end,
|
|
||||||
callback = function()
|
|
||||||
local current = isWakeLock()
|
|
||||||
android.setWakeLock(not current)
|
|
||||||
setWakeLock(not current)
|
|
||||||
end,
|
|
||||||
}
|
|
Loading…
Reference in New Issue