Tablet stuck in phone mode [SOLVED: bad DPI from manufacturer]

Which tablet are you using and what size and resolution is it screen?

The screen shot you posted is Roon running in phone mode, if it looks the same on your tablet I suspect you tablet is also a small screen device.

Roon on a larger device will look more like this:

You can see the blue ABC icon towards the bottom left.

OK. I just coaxed the tablet into landscape and fullscreen mode and it’s there. For some reason, Roon doesn’t want to re-draw when the device is rotated. On the tablet, if you start Roon with the device in portrait orientation, there’s no alpha nav element. If you start Roon in landscape (on this particular tablet anyway) it complains about screen resolution and offers “maximized” or “fullscreen”. "Maximized doesn’t appear to do anything but start the app. “Fullscreen”, as it turns out, starts the app a la Kindle, with the notification bar hidden and the alpha nav element is there.

Now. I did that once. Now I can’t get Roon into fullscreen mode , or to run in landscape at all. Even with the tablet locked on landscape, Roon starts in portrait. And with no alpha nav.

The tablet is an eight inch Sprint “Slate” - as opposed to the HP Slate. (terrible tablet, frankly, but it makes a dandy music player.)

It resolution turns out to be only 962x601, as reported by whatsmyscreenresolution.com

The business about Roon refusing to run in landscape mode is mysterious, especially given that it did at twice start start in landscape and offer fullscreen mode, which appeared to work, at least once.

I’m going to try an uninstall/reinstall and see what happens… nothing good. Same behavior.

It appears that Roon looks at the viewport and decides under a certain value that it’s dealing with phone and always orients itself accordingly (except when it doesn’t).

Sooo. That’s OK. Portrait is nice enough. But alpha nav needs to be available. especially on a phone, where you can only see a few thumbnails per screen.

If your screen, after compensation for DPI, runs at what our graphics designers have deemed large enough for the full ui, you are in tablet mode (which is similar to the desktop mode). If your machine doesn’t hit that spec, you run in phone mode.

The resolution, post DPI compensation is around 1024x700.

What most people around here call portrait mode is really phone mode, and waht they call landscape mode is desktop/tablet mode.

The phone mode does not really have browsers… you can get to them, but it’s not easy. The phone UI is meant to be a reduced functionality UI, for quick actions based around mobile usage, and not as a primary Roon experience.

It is on the roadmap to make the phone experience first class, but it involves a lot more than just a UI change.

Understood.

Now for more weirdness…

Today I picked up that tablet to check out the tablet version of the way cool fielded filters in “Focus”. Today, Roon refused to run in any way other than in landscape orientation. The tablet’s homescreen was in portrait when I started Roon. Roon’s splash screen came up on its side, Roon asked about running in fullscreen and I took that option. From then forward, Roon was steadfastly in landscape mode. Which was desired behavior - at least what I desire - and everything functioned perfectly. I couldn’t make Roon go back to portrait orientation any more than I could make it switch to landscape two nights ago. Today the tablet was in autorotate mode. (So in theory, an application should redraw from portrait to landscape and vice versa whenever the tablet was rotated.)

So, based on that and what you just said, I am tentatively concluding that:

  1. In “fullscreen mode” this tablet has j u s t enough resolution to run in tablet mode. That’s great by me, if I can somehow rely on it happening, since I don’t have a bigger tablet laying around. (I have a better one. But it’s even smaller.)

  2. Something strange is going on.

Hi, One thing to note is that Roon does not react to tablets screen rotation whilst running. The screen resources are only checked when Roon starts up and once running that mode (tablet/landscape or phone/portrait) is fixed unstill Roon is shutdown.

Can you please explain why?

It’s a design choice:

  • Table mode is landscape only
  • Phone mode is portrait only

The Roon app does monitor the screen orientation changes but only to flip the GUI 180 degrees.

OK. Only checking on startup makes sense. Or even simply not doing portrait above a certain screen res. Amazon Video behaves that way. Actually, I don’t think it does portrait ever.

The strange part is Roon starting in portrait regardless of tablet orientation at startup one day, despite restarts of the tablet, locking the tablet in landscape, dropping data and cache and even reinstalling, and then starting in landscape the next, again, regardless of tablet orientation.

That may not be a bug in the normal sense. It might just be the program interacting in an unexpected way with this poor-performing tablet. [slips into prognostication mode] On the other hand, I’d judge it to be a matter of concern because there are probably many users will will dedicate a tablet as a remote control, maybe one each in several rooms. As time goes on and people accumulate tablets, that will become more common. I doubt people will dedicate their best tablets as remote controls. Exactly the opposite is more logical. Thus, instead of seeing better hardware as upgrade-itus drives device sales, Roon needs to be prepared for the hand-me-downs. [/prognostication mode]

It sounds like the vendor of your tablet has added extensions to Android to improve the experience, but instead they are causing havoc.

See if you can turn them off for Roon – then it will be locked in one of the two modes.

@Carl nailed it. Note that Roon on the iPad Pro (the big one) does support portrait and landscape, as it is wide (post-DPI scaling) enough to run tablet mode in portrait

1 Like

[quote=“danny, post:15, topic:13659”]
iPad Pro (the big one)
[/quote]Forgot about that … I must get one of those.

YouTubeKids and Roon – it’s all I use the iPad Pro for, but it’s a pretty awesome machine for both.

So, after several days of behaving nicely in landscape mode (after paradoxically starting into landscape from a vertically oriented device), Roon crashed and upon restart reverted to starting into phone mode regardless.

Remember in grade school when they taught us that computers were wondrous devices that could only do simple things but would do them with absolute repeatability? Ah well…

I looked up the specs for that tablet and its screen is 800x 1280. So actually, it should work fine in tablet mode, resolution-wise. (Well, and the fact that it functions perfectly when it feels like it would also suggest that.)

Would an option is settings that forced the mobile client to one mode or another- phone, tablet, fullscreen or not - be a practicable solution for situations like this? (assuming this isn’t just a bug :slight_smile:

My guess is that the DPI is funky on that device. I just did an analysis of a Lenovo Yoga 10" tablet (similar resolution, probably same problem). There are some suggestions on DPI fixing stuff there. You should be able to run at 160 (MEDIUM) and take advantage of your 1280x800. My guess is you are running at 213 (TV) or higher and your “virtual resolution” is much smaller than 1280x800.

https://community.roonlabs.com/t/lenovo-yoga-stuck-in-portrait/10749/39?u=danny

I’m not sure I follow. If the native resolution of the device is 800x1280, shouldn’t the device report that and thus Roon would be run at 1:1 device pixels to virtual ones? I thought that the OS would only scale if the app was trying to display something that was too small for native. But Roon wants all the resolution it can get (up to a point), if I’m understanding it right.

Nope, that’s not how Android works. there is real resolution and there is DPI, which tells you how big the tablet is in real life units (inches).

Think about my phone, which has considerably larger resolution than your tablet (it has 1440 x 2560), but is under 6 inches.

In the case of my phone, looking at pure resolution, the elements would be so small that they would be impossible to use.

You must take into account DPI when working with Android. In fact, everything in Android works with units called “dp”. It is defined at https://developer.android.com/guide/practices/screens_support.html

A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density-independent way.

The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a “medium” density screen. At runtime, the system transparently handles any scaling of the dp units, as necessary, based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application’s UI, to ensure proper display of your UI on screens with different densities.

There is also something called Density DPI, so that every tablet and phone doesnt have wildly altering DPIs, and so that the tablet/phone manufacturer can take into account other aspects of the screen (curvature, how heavy it is and how far you hold it from your face), and then give it a “suggested dpi”, by which the entire Android UI is meant to run at.

In the case of that Lenovo Yoga in the other thread, the manufacturer decided that even through the screen is 1280x800, they want everything to be bigger, so they picked a Density DPI of 213 instead of the 160 that you want (pixel accurate, where 1dp == 1px, see formula above). Why did Lenovo do this? My guess is that they felt that people with bad eyes were buying that tablet and they needed bigger elements in the UI.

Try grabbing this app and posting a screenshot of your tablet’s specs:

https://play.google.com/store/apps/details?id=net.liverworks.getdisplaymetrics&hl=en

It’ll help us understand if you have the same issue as the Lenovo Yoga in the other thread, or a different issue.

Wow. Thanks! I hadn’t really absorbed the density DPI idea. And I didn’t realize it could be used in such a ,well, dumb way.

And you called it. 213. WTF.


Here’s the screenshot.

The tablet identifies itself as an AQT80. I doubt you’ll see many. But low-end, wonky tablets in general I suspect you’ll see lots of.

Last night, when I picked that tablet up, Roon started in tablet mode. Today, portrait. As if life isn’t hard enough already.

Can you try using the DPI changing method in the Lenovo thread and try to set it to 160?

Okeedokie! That took care of that!

I missed that you can do this without root privileges on the tablet.

Everything is smaller and sharper now and Roon starts repeatably in tablet mode. (about two dozen starts over three days now) I checked any apps that the change in DPI might have affected and nothing seems worse for the wear. If anything, video performance of UI animations might be a little improved. Movies are sharper (the tablet is now almost exactly 720p). I had to change some font sizes and and reload the wallpaper. All very painless. There some missing characters from time to time in the small type in Roon, but nothing life threatening.

For benefit of visitors from the planet Search Engine and archival integrity, the thread that Danny directed me to (Lenovo Yoga Stuck in portrait) links to http://www.androidbeat.com/2015/07/how-to-change-dpi-of-android-device-without-root/ which has all the particulars on using ADB. The ADB command I used was:

adb shell wm density "160” && adb reboot

Wherein you put the value you want where “160” is.

The command to back out of the change is:

adb shell wm size reset && adb reboot

Again, all the particulars are on that linked page and in Danny’s posts.

When it started looking like installing the ADB driver on my virtual Windows 7 machine might entail some work, I just grabbed the package android-tools on my Fedora Linux box. (You don’t have to install the drivers on most Linux distros, apparently.) With android-tools installed, you can issue ADB commands right in a normal terminal, as a normal user. It worked totally without drama.

@danny Thank you and feel free to link or move this post wherever you feel it might do the most good.

1 Like