android mtk 按键,Android 4.0 虚拟按键、手机模式、平板模式(转)
nullem;text-align:left">平臺(tái)信息:
內(nèi)核:linux2.6/linux3.0
系統(tǒng):android/android4.0
平臺(tái):S5PV310(samsungExynos4210/4412)
作者:xubin341719(歡迎轉(zhuǎn)載,請注明作者)
&nBSP; ? 三星新拿回來來的BSP,編譯后沒有“返回、最近打開應(yīng)用、home”三個(gè)虛擬鍵。我們硬件在設(shè)計(jì)的時(shí)候也沒有設(shè)定相應(yīng)的物理按鍵,平時(shí)調(diào)試程序的時(shí)候比較麻煩。怎么把這三個(gè)按鍵顯示出來??下面我們來說明。
同時(shí)在開始分析問前我引入另外兩個(gè)問題:
table 模式、phone模式選擇;
LCD_density參數(shù)設(shè)定,來決定圖標(biāo)密度大小。
一、引入問題:
1、 手機(jī)模式、平板模式
android4.0手機(jī)模式、平板模式兩種情況 界面的主體布局不太一樣,如下圖所示。
2、lcd_density
ro.sf.lcd_density=240 和ro.sf.lcd_density=160兩種不同的現(xiàn)象,很明顯說明這個(gè)參數(shù)的做用。后面我們遇到一個(gè)問題要從這里說明。
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、參考網(wǎng)友的說法:
將\Frameworks\base\core\res\res\values\config.xml中的下面屬性的值改為true;false
狀態(tài):模式:phone
參數(shù):config_showNavigationBar=true
出現(xiàn)以下情況:
(1)、虛擬按鍵邊上那個(gè)黑框已經(jīng)出來;
(2)、看不到三個(gè)按鍵圖標(biāo);
(3)、點(diǎn)擊邊緣時(shí)會(huì)有顏色變化,橫屏是“返回”鍵,豎屏?xí)r點(diǎn)擊為“最近打開程序”;感覺那個(gè)按鍵被放大了一樣。 由上面分析,這種現(xiàn)象是布局出問題,我們LCD分辨率為1280*800,其實(shí)三個(gè)按鍵出來了,只不過圖標(biāo)顯示太大,所以我們看不到。同時(shí)在這里我們引入前面我們提到的兩個(gè)問題:(1)、table 模式、phone模式選擇;(2)lcd_density參數(shù)設(shè)定,來決定圖標(biāo)密度大小。
很明顯的我們可以看出現(xiàn)在編譯的時(shí)phone模式、那個(gè)圖標(biāo)為什么看不到, lcd-_density設(shè)定的圖標(biāo)太大。
2、問題分析
打開機(jī)器,在串口終端或者是adb shell中:
cd/system
catdefault.prop
我們可以看到:
ro.build.characteristics=phone
這就是我們所說的table、phone參數(shù)設(shè)定,不同的模式在這里決定的。查找這些參數(shù)在那里設(shè)定,最終找到:
android_ramos_4412_02/android/device/samsung/smdk4x12/device.mk
ifeq ($(BOARD_USES_HIGH_RESOLUTION_LCD),true) //(1)、如果滿足條件,就設(shè)為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)、滿足條件就設(shè)為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設(shè)定。
PRODUCT_AAPT_CONFIG:= normalhdpi
Endif
(1)、如果滿足條件,就設(shè)為table
BOARD_USES_HIGH_RESOLUTION_LCD = true,就設(shè)定為table模式。
(2)、滿足條件就設(shè)為phone模式;
BOARD_USES_HIGH_RESOLUTION_LCD = flash,就設(shè)定為phone模式
(3)、lcd_density設(shè)定。
在PRODUCT_CHARACTERISTICS := phone時(shí),lcd_density設(shè)置為240。
現(xiàn)在我們要用table模式,所以我們要把BOARD_USES_HIGH_RESOLUTION_LCD這個(gè)參數(shù)設(shè)定為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還原成默認(rèn)值
將\frameworks\base\core\res\res\values\config.xml
false
狀態(tài)
模式:table
參數(shù):config_showNavigationBar=false
編譯,平板模式三個(gè)虛擬按鍵就可以出來了。我們的問題解決了。設(shè)為平板模式;三個(gè)虛擬按鍵出現(xiàn)。
三、phone模式下為什么只有一個(gè)黑框?
問題解決了,但是我們還有一個(gè)疑問,那就是按網(wǎng)友那種方法改動(dòng)后,為什么沒有出現(xiàn)我們理想的效果呢?回顧“1、參考網(wǎng)友的說法:”更改后,個(gè)別鍵有做用,但是不能看到三個(gè)按鍵。
分析代碼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
打印出來的信息也沒什么問題,相對(duì)的而已文件也正確。這就回到我們開始提到那個(gè)lcd_density參數(shù)問題了,上面可以很明顯的看到,當(dāng)lcd_density值發(fā)生小的改變后,圖標(biāo)大小有很大的變化,再個(gè)來說我們LCD的分辨率太高,1280X800的,所以把那三人圖標(biāo)放大大,所以我們看到上面那種現(xiàn)象。
總結(jié)
以上是生活随笔為你收集整理的android mtk 按键,Android 4.0 虚拟按键、手机模式、平板模式(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会不会导致内存泄漏_Java内存泄漏!为
- 下一篇: android sina oauth2.