user436605
user436605

Reputation: 421

Is there a way to determine if Android app is running full screen?

i was just wondering if there was a simple way to see if an application running on android is currently in full screen. is there a way to query android to see if you're currently in full screen mode or something like that?

Upvotes: 21

Views: 10416

Answers (10)

kamasuPaul
kamasuPaul

Reputation: 331

if you want to Respond to UI visibility changes for all apps including yours, use this code

View decorView = getWindow().getDecorView();//you can also use findViewById to get the view
decorView.setOnSystemUiVisibilityChangeListener
        (new View.OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
        // Note that system bars will only be "visible" if none of the
        // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
            // TODO: The system bars are visible. Make any desired
            // adjustments to your UI, such as showing the action bar or
            // other navigational controls.
        } else {
            // TODO: The system bars are NOT visible. Make any desired
            // adjustments to your UI, such as hiding the action bar or
            // other navigational controls.
        }
    }
}); 

source of info

Upvotes: 1

Jorgesys
Jorgesys

Reputation: 126563

is there a way to query android to see if you're currently in full screen mode or something like that?

You can get if your app is running in full screen;:

boolean isFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0;

i was just wondering if there was a simple way to see if an application running on android

if you are tryin to get if an application is running in full screen that´s not possible programatically only visually.

Upvotes: 2

Alecs
Alecs

Reputation: 2940

Following the info of Sigwann, here my code....

public boolean isFullScreen() {
    int flg = getWindow().getAttributes().flags;
    boolean flag = false;       
    if ((flg & WindowManager.LayoutParams.FLAG_FULLSCREEN) == WindowManager.LayoutParams.FLAG_FULLSCREEN) {
        flag = true;
    }
    return flag;
}

Simple, but works!

Upvotes: 10

peter.bartos
peter.bartos

Reputation: 12045

There is a nice hack, using the absolute position of a View on screen. Just check the position of any top left view of your layout (can be invisible), if it's on position 0,0. Like this:

/**
 * Check if fullscreen is activated by a position of a top left View
 * @param topLeftView View which position will be compared with 0,0
 * @return
 */
public static boolean isFullscreen(View topLeftView) {
    int location[] = new int[2];
    topLeftView.getLocationOnScreen(location);
    return location[0] == 0 && location[1] == 0;
}

Upvotes: 3

wnafee
wnafee

Reputation: 2146

As of api11 there is now a way to detect that using a View.setOnSystemUiVisibilityChangeListener

The listener interface documentation notes the following:

Interface definition for a callback to be invoked when the status bar changes visibility. This reports global changes to the system UI state, not what the application is requesting.

I don't know if there's a way to do it prior to Honeycomb.

Upvotes: 2

VeV
VeV

Reputation: 1246

Just to complete on Sigwann answer:

boolean fullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0;
boolean forceNotFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0;
boolean actionbarVisible = getActionBar().isShowing();

Upvotes: 17

Sigwann
Sigwann

Reputation: 121

I guess Commonsware wanted to say getWindow().getAttributes() and not getWindow().getFlags(); since getFlags does not exist as far as I know. At least it is not in doc.

you need to read getWindow().getAttributes().flags, which is an int.

WindowManager.LayoutParams lp = getWindow().getAttributes();
int i = lp.flags;

FLAG_FULLSCREEN = 1024 according to android documentation. so your flag is the 11th bite of lp.flags

if this bite = 1, full screen is activated.

Upvotes: 12

asaad399
asaad399

Reputation: 31

you may use some thing like this;

findViewById(android.R.id.content).getHeight();
    getResources().getDisplayMetrics().heightPixels;

and check for equality; hope this helps;

Upvotes: 2

Dan Breslau
Dan Breslau

Reputation: 11522

Activity.hasWindowFocus() tells you if your own activity is visible to the user. But, as CommonsWare notes, it's much harder to tell if another activity is on the top of the stack. You can try querying the ActivityManager (e.g, ActivityManager.getProcessTasks() ), but its methods don't provide an exact answer for your question.

Upvotes: 0

CommonsWare
CommonsWare

Reputation: 1007474

You can figure out if your Activity is running fullscreen via getWindow().getFlags().

However, if by "an application" you are referring to somebody else's application, then the answer is no.

Upvotes: 9

Related Questions