Page 1 of 2
Android screen size woes (11.2+)
Posted: Thu Oct 31, 2019 11:17 pm
by pgimeno
I'm trying 11.3 on Android. I skipped 11.2 but I have tested it now and it behaves the same, except for the lack of love.window.getSafeArea() and usedpiscale.
conf.lua:
Code: Select all
function love.conf(c)
c.window.usedpiscale = false
c.window.fullscreen = false or true -- change to test both cases
c.window.fullscreenmode = "desktop" -- "exclusive" doesn't make a difference
end
main.lua:
Code: Select all
local lg, lw = love.graphics, love.window
local c = {window = {}}
love.conf(c)
if c.window.usedpiscale == false and lg.getNativeDPIScale then
lg.setFont(lg.newFont(14*lg.getNativeDPIScale()))
end
lg.setLineStyle("rough")
lg.setBackgroundColor(0, 0, 1)
function love.draw()
local x, y, w, h = lw.getSafeArea and lw.getSafeArea()
local ww, wh = lg.getDimensions()
-- Crossed box
lg.line(0.5, 0.5, ww-0.5, wh-0.5)
lg.line(0.5, wh-0.5, ww-0.5, 0.5)
lg.rectangle("line", 0.5, 0.5, ww-1, wh-1)
lg.print(string.format("%d.%d %s %s %s %s %d %d", love.getVersion(), x, y, w, h, ww, wh), 0, 80)
end
function love.keypressed(k) return k == "escape" and love.event.quit() end
With this code, In all cases I get getSafeArea equal to 0, 0, getWidth, getHeight, but in fullscreen mode, with usedpiscale=false in my model the width is 2560 and in non-fullscreen it's 2413. The height doesn't change (1440). However:
- In non-fullscreen, the notifications bar completely hides a part of the image.
- In fullscreen, when the buttons hide, there is a black bar where the button bar would be.
Is love.window.getSafeArea() broken? Why can't we draw on the black area in fullscreen mode as other apps do?
Edit: 11.1 worked fine, in the sense that the app was in fullscreen by default and the area where the buttons were hidden was drawable.
Re: Android screen size woes (11.2+)
Posted: Sat Nov 02, 2019 5:48 pm
by nequals30
I also have a screen size question related to Android 11.3, but it may be more basic.
I'm using the 'LÖVE for Android' app from the Play Store, which got updated to 11.3 this week, and for some reason the screen dimensions of my game have changed.
To set the dimensions, I was just doing this in conf.lua:
Code: Select all
function love.conf(t)
t.window.width = 1920
t.window.height = 1080
end
This worked fine in the previous version of the Android app (0.10.2), but now love.graphics.getWidth() returns 683 on the Android version rather than 1920, so everything is getting scaled wrong.
How do I fix this?
Re: Android screen size woes (11.2+)
Posted: Sat Nov 02, 2019 6:37 pm
by pgimeno
nequals30 wrote: ↑Sat Nov 02, 2019 5:48 pm
This worked fine in the previous version of the Android app (0.10.2), but now love.graphics.getWidth() returns 683 on the Android version rather than 1920, so everything is getting scaled wrong.
This is not a bug. 11.x uses units that are not pixels, but device-independent length units, so that using e.g. 20 units looks about the same size in all models regardless of resolution. For example, the default font uses height 14, but using it without DPI conversion makes it pretty much unreadable without a magnifying glass in many devices.
In 11.3+, you can disable this conversion by setting t.window.usedpiscale = false in love.conf. However, think twice before using a resolution that depends on your particular screen size, if you plan to redistribute the app. Also, if you use text, you'll have to do the scaling manually.
Re: Android screen size woes (11.2+)
Posted: Sat Nov 02, 2019 7:22 pm
by nequals30
pgimeno wrote: ↑Sat Nov 02, 2019 6:37 pm
This is not a bug. 11.x uses units that are not pixels, but device-independent length units, so that using e.g. 20 units looks about the same size in all models regardless of resolution.
Ah. I knew I was missing something. Thanks for your help!
Re: Android screen size woes (11.2+)
Posted: Sun Nov 03, 2019 2:36 pm
by AuahDark
I don't always online in the forum and prefer online in Discord, so sorry for the long delay.
pgimeno wrote: ↑Thu Oct 31, 2019 11:17 pm
[...] In all cases I get getSafeArea equal to 0, 0, getWidth, getHeight, but in fullscreen mode, with usedpiscale=false in my model the width is 2560 and in non-fullscreen it's 2413. The height doesn't change (1440). [...]
I wonder what's the return value of getSafeArea when you set usedpiscale=true. The width difference indicates your phone has very small notch? To be honest I don't have phone with virtual Android buttons (back, home, recent) so I can't really say much about this until I get new phone around January probably.
Re: Android screen size woes (11.2+)
Posted: Sun Nov 03, 2019 4:36 pm
by pgimeno
AuahDark wrote: ↑Sun Nov 03, 2019 2:36 pm
I wonder what's the return value of getSafeArea when you set usedpiscale=true. The width difference indicates your phone has very small notch?
usedpiscale does not seem to affect this issue, it just behaves as expected. getSafeArea equals 0,0,getWidth,getHeight at all times, and getNativeDPIScale is 3.5, therefore with usedpiscale=true, the width reported by getSafeArea is 731 with fullscreen=true and 689 with fullscreen=false.
I've noticed that in full screen, it works fine sometimes. It tends to fail the first time, and it tends to correct itself if I press the soft home button then go to the task list and restore it. But sometimes it works fine the first time too.
In this thread, xNick1 is reporting somewhat similar issues:
https://love2d.org/forums/viewtopic.php?f=4&t=86479
Given the symptoms, it seems clear that it's an Android system problem, but it would be nice if we had a workaround.
Here are some screenshots (not posted here because the images are big, to avoid disrupting the window size):
http://www.formauri.es/personal/pgimeno ... reen-size/
Re: Android screen size woes (11.2+)
Posted: Mon Nov 04, 2019 3:41 pm
by AuahDark
Looks like code responsible to set the immersive mode is failing. I'll double check the code later, but no promise.
I'll release 11.3b when I fixed/workaround it.
Re: Android screen size woes (11.2+)
Posted: Tue Nov 05, 2019 10:26 am
by pgimeno
Thanks for looking into it.
Re: Android screen size woes (11.2+)
Posted: Sun Nov 17, 2019 12:54 pm
by AuahDark
I think I found the problem. There was some kind of code that conflicts with SDL. Mind if you test
this APK?
Re: Android screen size woes (11.2+)
Posted: Sun Nov 17, 2019 2:46 pm
by pgimeno
Thanks a lot! The non-fullscreen issue is fixed. Screen size and getSafeArea are both reported as 689x387 with usedpi=true and 2413x1356 when false. Reduced image with both screenshots is attached.
The intermittent fullscreen issue persists, though. I strongly suspect a system issue, since I'm still on Android 6.0. Weird thing is that LÖVE 11.1 did not have this issue.