I found an open source app that is designed to help protect from screen overlays, which seems to be capable of detecting whether any screen overlay happened, so it should be possible? But to figure out how it works would require going through a lot of hard to understand code.link to app: -overlay-protection
Let me preface this with I have already read through Android "Screen Overlay Detected" message if user is trying to grant a permission when a notification is showing and I understand exactly what the overlay problem is.
I was getting scolded for my app because every time a permission request would popup, the overlays popup would be shown and even though users gave permission for my application to draw overlays, they could never get past the permissions screen.
My question therefore is, is there a way to programmatically check if there are currently any apps that are running an overlay at runtime and if so, can I find out the package name of said apps?
Part of the problem comes from how I have specified the dimensions of the view. I used flags to specify "full screen", but this did not set the view's width and height to match the screen's dimensions. Thus I had to set those manually at startup.
Am I fundamentally misunderstanding how to create a full-screen overlay? How can I maintain the ability to draw over the entire screen, regardless of orientation (and even when my app is not the active app)?
Ok, basically I have a world space canvas (that currently uses a different camera) and a screen space canvas. In the screen space canvas I have a blur material from the asset store on a plane, which only works in screen space.
I want to write a program that would create a transparent overlay filling the entire screen in Windows 7, preferably with C++ and OpenGL. Though, if there is an API written in another language that makes this super easy, I would be more than willing to use that too. In general, I assume I would have to be able to read the pixels that are already on the screen somehow.
Using the same method screen capture software uses to get the pixels from the screen and then redrawing them would work initially, but the problem would then be if the screen updates. My program would then have to minimize/close and reappear in order for me to be able to read the underlying pixels.
Then by creating a full screen, borderless, undecorated window you get this exakt kind of overlay you desire. However this window will still receive all input events, so you'll have to do some grunt work and pass on all input events to the underlying windows manually.
UPDATE: Since a lot of people are mentioning it, as stated earlier this issue is not due to having an overlay app installed. Under the Draw over other apps menu, I have the following applications: Google Play Music, Google Play services, Photos, TalkBack, Twitch, Twitter. All of these are set to No.
This popup became an issue with the inclusion of the permissions manager in Android Marshmallow. If you have any apps installed on you phone that have permission to overlay on the screen there are a number of permission settings, File access included, that you can't change without disabling those screen overlay permissions first. For me, my text app and the facebook messenger app are the culprits. Every time I want to give any other app the requested permissions I have to click the Open Settings option on that popup and revoke the screen overlay access for the two aforementioned apps, then reopen the app in question to get the permission prompt again. Then I have to re-enable the overlay permissions again if I want my message popups or my chat heads. It's really annoying. I think your app is fine, android's permissions management is just a confusing mess.
When a screen overlay is detected, System will not allow you to continue to granting permissions for apps. Because the screen overlay can receive the input of user. So you have to disable all the "screen overlay" things before granting permissions for your apps.It is not the problem of your app. All apps that have target SDK 23 get this problem.
During a software deployment that will take a sizeable chunk of time (removing old MS Office installs, deploying O365, cleaning up some third party applications) I want the screen to go blank or black or perhaps a custom background, and prevent commands (ie:Control-Alt-Delete or Control-Shift-Esc) from being run during the install, and then dump the user back at the Windows logon once complete.
I'm interested in creating assistive technology for language learning. For this purpose I want to create an overlay of the size of the whole screen that draws something on top, like an overlay on top of your monitor.
So maybe you can see that some of this depends on why you need an overlay, for example if you just need to track events over the whole screen, but only draw regular opaque controls that block the mouse like usual, then you don't actually need the transparent window at all, just the hook and a regular window!
If you want to draw to the overlay and still click through, you will need to use WS_EX_LAYERED WS_EX_TRANSPARENT - the former alone lets you create partially transparent windows "officially", and either set a color key to be transparent or use an alpha channel, depending on what you call SetLayeredWindowAttributes() with. Either way, this lets opaque parts of the window (or partially transparent with alpha) receive mouse events, and everything else falls through to the window behind. With WS_EX_TRANSPARENT as well, all mouse events fall through to the window behind, and you never get the event yourself!
I'm in the process of reworking the computer control of my imaging gear. I will likely end up with either a NUC or PC Stick. Either way, it will be headless, and I will operate it by connecting via Remote Desktop over WiFi from my Surface Book or Surface Pro tablet. The rigid screens that I've used for years won't work well with the Surface devices for various reasons. Instead, I am looking for some red overlay that can be easily applied and removed from the screen.
The reason that I'm looking for something else, is that I cannot put a frame around them for cooling reasons (Surfaces have the entire computer in the screen assembly, and they cool around the edges). There's not enough frame around the screen for velcro, plus I would be concerned about light leak, since velcro would leave the shield not absolutely flush with the screen.
I don't think that this would work for my purposes. A backlit screen throw far more light than I am comfortable with, even if you make the screen all black. An OLED screen might be a better solution, but Surfaces don't have OLED screens.
For example, assume that I set the screen to be all black pixels and then dim the screen down all the way. That's as dark as the screen can get. Even then, the screen is bright enough from the backlight that the glow is objectionable. No software can make the screen darker than all black.
What I mean by excessive blue light, is that an ideal red overlay would make the screen red. Just red. Any colors other than red would be completely invisible. An OLED screen, combined with software to enable only the red channel would work perfectly for this, and would require no overlay.
In the absence of an OLED screen, I would like to put the reddest overlay that I can find over the screen. Rubylith works pretty well, but I haven't found an easy way to apply it flush to the screen. Velcro and rubber band type solutions have the downside that they are almost guaranteed to allow light to leak at the edges of the screen. Velcro as the additional issue that there needs to be non-screen space on the bezel where you can stick the velcro, which I don't have. Building a red shield from plexiglass, which is what I've done with laptops up until now, does not work for Surface devices because they need to wrap around the screen. This is great for light leakage, but blocks the cooling vents on Surface devices.
The only thing that can work effectively, is something that fits completely flat on the screen, with absolutely zero gaps to let light escape. And there's really not any way to attach something that doesn't stay put on its own, because there's very little bezel, and you can't go around the edges of the screen with anything to attach the shield.
No it wouldn't, if it WERE easy to fit a piece of red film on what you have. Is there any way you could cut slots or something in the red film so it doesn't cover the air vents, but still covers the screen?
There was a comment by a purchaser on Amazon that said he had good luck by using a double thick layer of the film on his laptop for astronomy use. There were a number of comments that confirmed that it sticks well to itself, which is great for doubling up. So I figured that I had nothing to lose by buying a roll of it. I plan on using some mild soapy water to stack two layers and use something like a credit card to squeeze out the water between the layers. That should stick the two layers together pretty well and without air bubbles. I'll then cut the double thick layer to size and try it on the screen of my machine.
Most of the side light leak and excess brightness from LCD screens comes from off-axis light and the nature of the interaction of the back-light and the LCD panel. IPS screens go a long way towards reducing this unwanted side emission as do OLED screens.
When I recently bought a new laptop for astronomy use, I got one with an IPS screen. Using the Windows 10 Nightlight reduction mode set to full low color temperature and a custom screen theme, I no longer have to use anything over the screen. It is very deep red and emits none of the annoying side light common to many non-IPS laptops.
Back to your problem with dealing with an existing laptop or tablet without an IPS or OLED display, the thing that might make all the difference is a privacy screen. You may have seen these used before. They are a polarizing sheet that goes over the display of a laptop. They are made for business use (usually by managers working with sensitive personnel data) to keep anyone more than a dozen degrees or so off-axis from seeing the screen. Viewed dead on axis, they do little light reduction. Off axis by 30 degrees or so and the laptop display appears black or dark gray at best. They are not too hard to find.
35fe9a5643