android4.2电视,Android 4.2.2平板电视隐藏系统底部状态栏

545c48ee1eb2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Android4.2.2平板电视隐藏系统底部状态栏

Android开发者们都在处理9.0的兼容问题了,而我今天却在折腾4.2.2平板电视的底部状态栏隐藏问题。

前段时间帮另一个项目组同事搭的一个简易h5壳app这几天又让帮忙处理全屏问题。最初是隐藏了顶部状态栏,现在又要求隐藏底部虚拟按键。于是,唰唰唰,出现下面代码:

/**

* 隐藏底部虚拟按键,且全屏

*/

private void hideBottomMenu() {

//隐藏虚拟按键,并且全屏

if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api

View v = this.getWindow().getDecorView();

v.setSystemUiVisibility(View.GONE);

} else if (Build.VERSION.SDK_INT >= 19) {

//for new api versions.

View decorView = getWindow().getDecorView();

int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

| View.SYSTEM_UI_FLAG_FULLSCREEN;

decorView.setSystemUiVisibility(uiOptions);

}

}

将其放在onCreate中,Android6.0手机上测试,一切正常,可以隐藏,唯一的不足是点击屏幕后底部虚拟按键又出现了,而且背景是透明度渐变的。于是又通过拦截touch事件,解决了点击这一问题。

但是,将app安装到平板电视后,发现虚拟按键隐藏不了。平板电视是基于4.2.2定制的系统,于是网上找相关资料,尝试了几种,最终发现可以通过命令行代码来实现隐藏与显示。

隐藏底部虚拟按钮

/**

* 关闭Android导航栏,实现全屏

*/

private void closeBar() {

try {

String command;

command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib service call activity 42 s16 com.android.systemui";

ArrayList envlist = new ArrayList();

Map env = System.getenv();

for (String envName : env.keySet()) {

envlist.add(envName + "=" + env.get(envName));

}

String[] envp = envlist.toArray(new String[0]);

Process proc = Runtime.getRuntime().exec(

new String[] { "su", "-c", command }, envp);

proc.waitFor();

} catch (Exception ex) {

e.printStackTrace();

}

}

显示底部虚拟按钮

由于是通过命令行su指令实现隐藏虚拟按钮,如果不主动去显示,则即使退出app,虚拟按钮仍然是隐藏的。所以,我们需要在退出app时,主动显示虚拟按钮,可以通过onDestory或者onStop或finish中调用以下方法实现。

/**

* 显示导航栏

*/

public static void showBar() {

try {

String command;

command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService";

ArrayList envlist = new ArrayList();

Map env = System.getenv();

for (String envName : env.keySet()) {

envlist.add(envName + "=" + env.get(envName));

}

String[] envp = envlist.toArray(new String[0]);

Process proc = Runtime.getRuntime().exec(

new String[] { "su", "-c", command }, envp);

proc.waitFor();

} catch (Exception e) {

e.printStackTrace();

}

}

}

个人博客: IT老五

微信公众号:【IT老五(it-lao5)】,一起源创,一起学习!

以上代码可以实现4.2.2平板电视上对底部虚拟按键的隐藏与显示,再次强调下:通过该方法隐藏虚拟按键,退出app后虚拟按键是不会主动出现的,请在不需要全屏的时候或者退出app的时候主动调用显示虚拟按键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值