nullem;text-align:left">平台信息:

内核:linux2.6/linux3.0

系统:android/android4.0

平台:S5PV310(samsungExynos4210/4412)

作者:xubin341719(欢迎转载,请注明作者)

&nBSP;   三星新拿回来来的BSP,编译后没有“返回、最近打开应用、home”三个虚拟键。我们硬件在设计的时候也没有设定相应的物理按键,平时调试程序的时候比较麻烦。怎么把这三个按键显示出来??下面我们来说明。

同时在开始分析问前我引入另外两个问题:

table 模式、phone模式选择;

LCD_density参数设定,来决定图标密度大小。

一、引入问题:

1、 手机模式、平板模式

android4.0手机模式、平板模式两种情况 界面的主体布局不太一样,如下图所示。

2、lcd_density

ro.sf.lcd_density=240 和ro.sf.lcd_density=160两种不同的现象,很明显说明这个参数的做用。后面我们遇到一个问题要从这里说明。

To change the density of the screen change /system/build.prop

ro.sf.lcd_density=240

high-density, at the right of the picture, comes by default in the mephisto's roms.

ro.sf.lcd_density=180

low density, at the left of the picture

(This means that the number of pixels per inch is240=800/3.5"

3.5" is the screen of the H1 and 800×480 display resolution).

So you can pick any number between 240 and 180 - personally I use 220.

You can do this using root explorer apk for instance:

二、问题分析

1、参考网友的说法:

将\Frameworks\base\core\res\res\values\config.xml中的下面属性的值改为true;false

状态:模式:phone

参数:config_showNavigationBar=true

出现以下情况:

(1)、虚拟按键边上那个黑框已经出来;

(2)、看不到三个按键图标;

(3)、点击边缘时会有颜色变化,横屏是“返回”键,竖屏时点击为“最近打开程序”;感觉那个按键被放大了一样。 由上面分析,这种现象是布局出问题,我们LCD分辨率为1280*800,其实三个按键出来了,只不过图标显示太大,所以我们看不到。同时在这里我们引入前面我们提到的两个问题:(1)、table 模式、phone模式选择;(2)lcd_density参数设定,来决定图标密度大小。

很明显的我们可以看出现在编译的时phone模式、那个图标为什么看不到, lcd-_density设定的图标太大。

2、问题分析

打开机器,在串口终端或者是adb shell中:

cd/system

catdefault.prop

我们可以看到:

ro.build.characteristics=phone

这就是我们所说的table、phone参数设定,不同的模式在这里决定的。查找这些参数在那里设定,最终找到:

android_ramos_4412_02/android/device/samsung/smdk4x12/device.mk

ifeq ($(BOARD_USES_HIGH_RESOLUTION_LCD),true) //(1)、如果满足条件,就设为table模式;

product_CHARACTERISTICS:= tablet

PRODUCT_COPY_FILES += \ frameworks/base/data/ETC/tablet_core_hardware.xml:system/etc/permissions/tablet_core_hardware.xml

$(call inherit-product, frameworks/base/build/tablet-dalvik-heap.mk)

else

PRODUCT_CHARACTERISTICS:= phone//(2)、满足条件就设为phone模式;

PRODUCT_COPY_FILES += \

frameworks/base/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml

$(call inherit-product, frameworks/base/build/phone-hdpi-512-dalvik-heap.mk) PRODUCT_PROPERTY_OVERRIDES += \

ro.sf.lcd_density=240//(3)、lcd_density设定。

PRODUCT_AAPT_CONFIG:= normalhdpi

Endif

(1)、如果满足条件,就设为table

BOARD_USES_HIGH_RESOLUTION_LCD = true,就设定为table模式。

(2)、满足条件就设为phone模式;

BOARD_USES_HIGH_RESOLUTION_LCD = flash,就设定为phone模式

(3)、lcd_density设定。

在PRODUCT_CHARACTERISTICS := phone时,lcd_density设置为240。

现在我们要用table模式,所以我们要把BOARD_USES_HIGH_RESOLUTION_LCD这个参数设定为true。

android_ramos_4412_02/android/device/samsung/smdk4x12/BoardConfig.mk

OARD_USES_HIGH_RESOLUTION_LCD := true

把BOARD_USES_HIGH_RESOLUTION_LCD选为ture就可以编译成平板模式。

(4)、把config_showNavigationBar还原成默认值

将\frameworks\base\core\res\res\values\config.xml

false

状态

模式:table

参数:config_showNavigationBar=false

编译,平板模式三个虚拟按键就可以出来了。我们的问题解决了。设为平板模式;三个虚拟按键出现。

三、phone模式下为什么只有一个黑框?

问题解决了,但是我们还有一个疑问,那就是按网友那种方法改动后,为什么没有出现我们理想的效果呢?回顾“1、参考网友的说法:”更改后,个别键有做用,但是不能看到三个按键。

分析代码android/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.Java

mNavigationBarHeight=mHasNavigationBar? mContext.getResources().getDimensionPixelSize(com.android.internal.R.dimen.navigation_bar_height) : 0; mNavigationBarWidth=mHasNavigationBar ?mContext.getResources().getDimensionPixelSize(com.android.internal.R.dimen.navigation_bar_width) : 0;

Log.v(TAG, "xubintestmNavigationBarHeight= " + mNavigationBarHeight

  "mNavigationBarWidth=" +mNavigationBarWidth);

打印值为:

V/WindowManager( 1250): xubin testmNavigationBarHeight=72 mNavigationBarWidth=63

V/WindowManager(1250): xubin testmNavigationBarHeight=72 mNavigationBarWidth=63

打印出来的信息也没什么问题,相对的而已文件也正确。这就回到我们开始提到那个lcd_density参数问题了,上面可以很明显的看到,当lcd_density值发生小的改变后,图标大小有很大的变化,再个来说我们LCD的分辨率太高,1280X800的,所以把那三人图标放大大,所以我们看到上面那种现象。

android mtk 按键,Android 4.0 虚拟按键、手机模式、平板模式(转)相关推荐

  1. 安卓平板隐藏虚拟按键_Android 4.0 虚拟按键、手机模式、平板模式

    关键词:android 4.0 手机模式(phone) 平板模式(table) 虚拟按键 lcd_density 平台信息: 内核:linux2.6/linux3.0 系统:android/andro ...

  2. 关于Android适配华为等带有底部虚拟按键的解决方案

    关于Android适配华为等带有底部虚拟按键的解决方案 参考文章: (1)关于Android适配华为等带有底部虚拟按键的解决方案 (2)https://www.cnblogs.com/dhcn/p/7 ...

  3. android4.0虚拟按键

    我们公司手机依然还是支持硬件按键,但是android4.0的虚拟按键,可能被屏蔽了,在查找很多资料,找到了打开虚拟按键的地方.开发基于android源代码的同事们,就知道在framework/base ...

  4. Android 7.0 虚拟按键(NavigationBar)源码分析 之 点击事件的实现流程

    第二部分: Let's go!!! [点击事件的实现流程] 1.初始化 虚拟按键点击效果的实现和实体按键相似,也是通过上报一个keyCode值,来判断哪个按钮被点击.不同的是,实体按键的keyCode ...

  5. Android常见公有方法(隐藏虚拟按键/隐藏软键盘/获取屏幕宽高等)

    隐藏虚拟按键,并且全屏 使用: ScreenUtils.hideBottomUIMenu(getWindow().getDecorView()); /*** 隐藏虚拟按键,并且全屏*/public s ...

  6. Android 小米全面屏手势底部虚拟按键的适配

    在项目的开发过程中,发现小米部分手机有一个全面屏手势功能,该功能可隐藏底部虚拟按键,通过手势的方式来实现返回和Home功能. 效果如下所示: 当开启全面屏手势的时候,就会存在一个问题,我们通过以下代码 ...

  7. android系统定制开发动态显示隐藏虚拟按键虚拟导航Navigationbar

    新需求:删除Android 原生自带的虚拟导航按键(暂定) 如想直接删除不显示Navigationbar,可以用如下两个方法 1)在资源xml文件中把导航按键的高度和宽度设置为0 frameworks ...

  8. Android系统开启导航栏NavigationBar(虚拟按键)

    导航栏NavigationBar 源码部分: frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManag ...

  9. Android 沉浸式状态栏与华为虚拟按键的冲突处理

    最近在写自己的小东西的时候,遇到了一个Bug,就是沉浸式转态栏与华为虚拟按键的冲突的问题. 先看一下出现问题的图 然后根据网上的一些办法 最多的就是告诉你,在布局文件加这个2个属性 android:f ...

最新文章

  1. Python 高阶函数filter、map、reduce、reversed、sorted及迭代器函数 iter
  2. Windows Server 2008 R2入门之文件服务器
  3. 学习笔记 Keras:基于Python的深度学习库
  4. 技术分享|集成开放平台使用Consul Watch机制实现配置热更新
  5. 独立主题需要有index.php模板文件,wordpress 主题模板文件列表及其作用
  6. virtualbox display size
  7. 如何查看windows某个目录下所有文件/文件夹的大小
  8. oracle+性能负载查看,Oracle 11g数据库重放教程(二):负载重放基本实例讲解-性能调优-Oracle频道-中国IT实验室...
  9. 微信打开网页:如需浏览,请长按网址复制后使用浏览器访问怎么解决
  10. 离散数学笔记整理(个人向)
  11. 淘宝网购物车jquery源码和网易新用户注册页面表单验证的练习
  12. 创建物理卷报错Can‘t open /dev/sdb1 exclusively. Mounted filesystem?以及对应的解决方法
  13. Contrastive Clustering
  14. 云原生爱好者周刊:Grafana Loki 免费电子书
  15. 懂技术/ 更应该了解社会 /让社会变好 中国社会学家 周孝正经典语录
  16. 全面理解document.write()
  17. 制作动图简易软件(附下载方式)
  18. 手把手教您JbuliderX+Tomcat5.0的配置
  19. java顺序查找法 监视器_java算法:顺序查找(有监视哨和无监视哨)
  20. MT4安卓版官网下载

热门文章

  1. hdfs fsck命令查看HDFS文件对应的文件块信息(Block)和位置信息(Locations)
  2. ElasticSearch IK 分词器快速上手
  3. 存储计算解耦合,构建中国人英语语音数据库
  4. Android网络性能监控方案
  5. SpringCloud应用在Kubernetes上的最佳实践—开发篇
  6. 一个多业务、多状态、多操作的交易链路?闲鱼架构这样演进
  7. 你说精通 Redis ,你看过持久化的配置吗?
  8. 谷歌云试图抢占SAP软件云市场;企业上云迎来“黄金时代”;IBM和SAP帮助金融机构加快采用云技术……...
  9. 很用心的为你写了 9 道 MySQL 面试题,建议收藏!
  10. K8S精华问答 | Kubernetes用的是Docker的容器?