Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Easy way to hide system bar on Android ICS

I will give my ICS tablets for users to complete a survey so I would like the user to work with my app only. They should not be able to switch to the home screen, press back buttons etc., so I would like to hide the system bar completely.

My tablet is rooted and I know some application like this can help me, but I don't need all the extra functions of this app.

I found this tutorial that could help me, but if I can add the code to do my own, it would be great.

like image 370
Tran Hoang Duy Anh Avatar asked May 04 '12 08:05

Tran Hoang Duy Anh


3 Answers

After a lot of searching on the internet, I managed to get the System Bar to hide and appear in a 4.2 device using:

To Hide:

Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui");

Or use 79 instead of 42 for API less than 14. You may also need to include the SET_DEBUG_APP permission, in which case you need to have the application signed with the system key or installed in the /system/app/ directory.

To Show:

Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService");

Alternatively some people have used the -a (instead of -n) option, though this was causing an error on my device:

Error: Not found; no service started.

For Android 4.4, there is a new feature called immersive mode which hides both the system and status bars. The system UI is toggled by the user through the use of an edge swipe from the top or bottom of the screen. For more details take a look at:

http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)

Using new IMMERSIVE mode in android kitkat

For example:

getWindow().getDecorView().setSystemUiVisibility(
          View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_IMMERSIVE)
like image 179
TheIT Avatar answered Nov 07 '22 05:11

TheIT


HideBar has a kiosk mode especially for this use case.

A free download is available at http://ppareit.github.com/HideBar/. You can also find it in the market at https://play.google.com/store/apps/details?id=be.ppareit.hidebar.

If you want to incorporate it in your own test/survey application you can always contact the developer (see the links for an email). The code could be explained or an Intent to do the hiding could be provided.

like image 39
ppareit Avatar answered Nov 07 '22 05:11

ppareit


check this link: (requires root) http://android.serverbox.ch/?p=306

similar question was posted here also: Is there a way to hide the system bar in Android 3.0? It's an internal device and I'm managing navigation

or try HideBar http://ppareit.github.com/HideBar/

Actually you can simply put the system bar in "lights out" mode, the system bar buttons and notifications gets dimmed.

View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
like image 24
julian Avatar answered Nov 07 '22 05:11

julian