mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[android]: fix backlight toggle (#6520)
* check on startup if frontlight can be changed. * Init fl_min if necessary not to use intensity==0
This commit is contained in:
@@ -6,17 +6,37 @@ local AndroidPowerD = BasePowerD:new{
|
||||
fl_max = 100,
|
||||
}
|
||||
|
||||
-- Let the footer know of the change
|
||||
local function broadcastLightChanges()
|
||||
if package.loaded["ui/uimanager"] ~= nil then
|
||||
local Event = require("ui/event")
|
||||
local UIManager = require("ui/uimanager")
|
||||
UIManager:broadcastEvent(Event:new("FrontlightStateChanged"))
|
||||
end
|
||||
end
|
||||
|
||||
function AndroidPowerD:frontlightIntensityHW()
|
||||
return math.floor(android.getScreenBrightness() / self.bright_diff * self.fl_max)
|
||||
end
|
||||
|
||||
function AndroidPowerD:setIntensityHW(intensity)
|
||||
-- if frontlight switch was toggled of, turn it on
|
||||
android:enableFrontlightSwitch()
|
||||
|
||||
self.fl_intensity = intensity
|
||||
android.setScreenBrightness(math.floor(intensity * self.bright_diff / self.fl_max))
|
||||
end
|
||||
|
||||
function AndroidPowerD:init()
|
||||
self.bright_diff = android:getScreenMaxBrightness() - android:getScreenMinBrightness()
|
||||
|
||||
-- if necessary scale fl_min:
|
||||
-- do not use fl_min==0 if getScreenMinBrightness!=0,
|
||||
-- because intenstiy==0 would mean to use system intensity
|
||||
if android:getScreenMinBrightness() ~= self.fl_min then
|
||||
self.fl_min = math.ceil(android:getScreenMinBrightness() * self.bright_diff / self.fl_max)
|
||||
end
|
||||
|
||||
if self.device:hasNaturalLight() then
|
||||
self.warm_diff = android:getScreenMaxWarmth() - android:getScreenMinWarmth()
|
||||
self.fl_warmth = self:getWarmth()
|
||||
@@ -42,4 +62,23 @@ function AndroidPowerD:isChargingHW()
|
||||
return android.isCharging()
|
||||
end
|
||||
|
||||
function AndroidPowerD:turnOffFrontlightHW()
|
||||
if not self:isFrontlightOnHW() then
|
||||
return
|
||||
end
|
||||
android.setScreenBrightness(self.fl_min)
|
||||
self.is_fl_on = false
|
||||
broadcastLightChanges()
|
||||
end
|
||||
|
||||
function AndroidPowerD:turnOnFrontlightHW()
|
||||
if self:isFrontlightOn() and self:isFrontlightOnHW() then
|
||||
return
|
||||
end
|
||||
android.setScreenBrightness(math.floor(self.fl_intensity * self.bright_diff / self.fl_max))
|
||||
|
||||
self.is_fl_on = true
|
||||
broadcastLightChanges()
|
||||
end
|
||||
|
||||
return AndroidPowerD
|
||||
|
||||
@@ -348,6 +348,7 @@ function KoboPowerD:turnOffFrontlightHW()
|
||||
UIManager:broadcastEvent(Event:new("FrontlightStateChanged"))
|
||||
end
|
||||
end
|
||||
|
||||
function KoboPowerD:turnOnFrontlightHW()
|
||||
-- NOTE: Insane workaround for the first toggle after a startup with the FL off.
|
||||
-- The light is actually off, but hw_intensity couldn't have been set to a sane value because of a number of interactions.
|
||||
|
||||
Submodule platform/android/luajit-launcher updated: eaa5cff5a0...8d0ebd8945
Reference in New Issue
Block a user