Prevent Other Applications Form Capturing/Recording Screen

Prevent other applications form capturing/recording screen

You can secure screen capturing functionality by adding FLAG_SECURE into your Activity as follows

  getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); 

Check this link which says

Screen capturing and sharing

Android 5.0 lets you add screen capturing and screen sharing
capabilities to your app with the new android.media.projection APIs.
This functionality is useful, for example, if you want to enable
screen sharing in a video conferencing app.

The new createVirtualDisplay() method allows your app to capture the
contents of the main screen (the default display) into a Surface
object, which your app can then send across the network. The API only
allows capturing non-secure screen content, and not system audio. To
begin screen capturing, your app must first request the user’s
permission by launching a screen capture dialog using an Intent
obtained through the createScreenCaptureIntent() method.

Also documentation at this link says that

Window flag: treat the content of the window as secure, preventing it
from appearing in screenshots or from being viewed on non-secure
displays.

Above solution will surely prevent applications from capturing Video of your app

Prevent screen capturing softwares to capture an application screen

I have achieved this by using SetWindowDisplayAffinity, as per MSDN

The display affinity setting. This setting specifies where the window's contents are can be displayed. Set this value to WDA_MONITOR to display the window's contents only on a monitor. Set this value to WDA_NONE to remove the monitor-only affinity.

So setting WDA_MONITOR to handle of WinForm makes it black when print screen or desktop recording or in desktop sharing application.

Image captured through mobile:

Sample Image

However, I am open for any other (better) answer for this.



Related Topics



Leave a reply



Submit