home-assistant / android

:iphone: Home Assistant Companion for Android
https://companion.home-assistant.io/
Apache License 2.0
2.13k stars 605 forks source link

Dashboard as a screensaver option for DayDream #4020

Open aigarius opened 7 months ago

aigarius commented 7 months ago

Is your feature request related to a problem? Please describe. Android provides a way to show a screensaver view from third party apps. I would love to use this to have a separate view-only dashboard the my tablet could show while idle (and charging). Currently that is possible using Fully Kiosk Browser app as an intermediate step. That does requires a paid app license.

Describe the solution you'd like HA app should advertise as a screensaver option and settings in the app should allow choosing which dashboard should be shown as screensaver, separate from default dash.

Describe alternatives you've considered, if any Using Fully Kiosk Browser as intermediate app works.

Additional context The feature is primarily advertised on Pixel Tablet and autoactivates when docked, if the feature is enabled.

dshokouhi commented 7 months ago

Can you please direct us to the feature you are referring to? Preferably developer documentation.

Looking at official Android 14 documentation I do not see the word screensaver even mentioned. Are you sure you are not confusing a device hardware feature for an OS feature?

https://developer.android.com/about/versions/14/summary

dshokouhi commented 7 months ago

The closest option I see is the DreamService feature which was added about 10 years ago and only plays videos, audio and pictures I believe. It does not allow to show a website. If that is the case we cannot take this request as that would be extremely outdated. Maybe a better option is to just automate opening the app when on the dock?

aigarius commented 7 months ago

I'll take some screenshots. The feature was very restricted when Pixel Table launched, but now has it become far more powerful. In the latest versions of the Fully Kiosk Browser app the feature has been added to expose that browser as the "screensaver". By default it just shows the black color, however you can give one or multiple web pages as the source for the "screensaver". Interaction with the pages is not possible - first touch on the device turns the screensaver off and dumps you back to the lock screen. So it is only useful for view-only dashboards that show you the various values. When you walk up to the tablet and unlock it, then a different dashboard can be used for interaction.

aigarius commented 7 months ago

Here are the screenshots of the functionality.

In the Android settings app:

Screenshot_20231119-220154 Screenshot_20231119-220204 Screenshot_20231119-220211

In the Fully Kiosk Browser app settings:

Screenshot_20231119-220241 Screenshot_20231119-220302

aigarius commented 7 months ago

The only thing in the API that even remotely looks like that is https://developer.android.com/reference/android/service/dreams/DreamService

Could they have reused the past API for a new function somehow?

Edit: https://github.com/square/leakcanary/issues/2534 suggests that it is indeed the same thing

https://android-developers.googleblog.com/2012/12/daydream-interactive-screen-savers.html details a bit more.

dshokouhi commented 7 months ago

That's what I thought it was but since you mentioned Android 14 I thought it was something new. Personally I don't think it's a good idea for something that will be so out of date and it's a hack than anything to save a screenshot of the dashboard. For an app like fully kiosk I think it makes sense but not for our app where the expectation is that things are live and current.

aigarius commented 7 months ago

The view is live and not a screenshot - I have a dashboard with animation of the weather radar on it showing - the animation plays without issue. One of Google examples in the 2012 blog is a WebView.

mattague commented 2 months ago

Android 15 is implenting its own version of something like this, but it would be great if I could use native HA for it instead.

S0ulf3re commented 1 month ago

I'd like to point out this app real quickly that I've been using on my pixel tablet for having a screensaver of a dashboard. It does cost a little bit though.

https://play.google.com/store/apps/details?id=chyzinr.webpagescreensaver

I would love to see this integrated into the Home assistant app as well though.