为了毕设的要求,需要在Android系统上运行一个app来控制硬件,今天开始这个app的编写。
首先,我们的系统将只运行这个app,也就是我们不需要状态栏,虚拟按键等。
故这里将app设置为全屏模式。
/** * 隐藏虚拟按键,并且全屏 */ private final void hideBottomUIMenu() { 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); } }
但是在退出app后,重新打开软件则不会全屏。
这里,我在网上找了个方法,直接在系统底层将虚拟按键给禁用掉。
找到framework/base/core/res/res/values/dimens.xml,在其中把Navigation的配置改成0
<!-- Height of the bottom navigation / system bar. -->
<dimen name="navigation_bar_height">0dp</dimen>
<!-- Height of the bottom navigation bar in portrait; often the same as @dimen/navigation_bar_height -->
<dimen name="navigation_bar_height_landscape">0dp</dimen>
这里只需要将红色的地方修改为0即可。重新烧写系统,开机后就没有下面的虚拟按键了。
链接:http://blog.csdn.net/huanghai381/article/details/51684485
但是,用户还是可以通过状态栏下拉来进入系统设置,所以我们也要禁用掉状态栏下拉的功能。
这里我找到了一个帖子,确实可用。
具体是将在frameworksasepackagesSystemUIsrccomandroidsystemuistatusbarphonePanelBar.java文件中的 startOpeningPanel(panel);
注释掉即可。
http://blog.csdn.net/u011913612/article/details/72478517
虽然上面的两中方法均实现了我的要求,但是我的系统是专门运行我的这一个app程序的。所以用上面的方法并没有什么不妥。但是实际中,这种方法我个人觉得还是不太好的。非不得已不要使用。