1.参考资料网站: http://www.verydemo.com
语言、国家代码: http://www.w3.org/WAI/ER/IG/ert/iso639.htm
2.请教修改cpu显示单核变四核的问题 
我这边搞定的方法给大家分享下:
在/alps/kernel/drivers/base下面-
搜索SYSDEV_CLASS_ATTR(kernel_max
在同样的地方添加三个
SYSDEV_CLASS_ATTR(cpu1
SYSDEV_CLASS_ATTR(cpu2
SYSDEV_CLASS_ATTR(cpu3
在相应数组中也添加进去,就OK了。 
按此方法可以改8核,16核。

3.查看MTK版本信息
buildinfo.sh
version_defaults.mk

http://www.ddooo.com/softdown/21893.htm

adb shell
然后cd proc
然后cat kmsg >/sdcard/ps.log

4.配置工程
X:\Work\a515_0218\a515\alps\build\target\product\handing15_a515.mk

X:\Work\a515_0218\a515\alps\mediatek\custom\handing15_a515

X:\Work\a515_0218\a515\alps\mediatek\config\handing15_a515
X:\Work\a515_0218\a515\alps\mediatek\config\out\handing15_a515

X:\Work\a515_0218\a515\alps\frameworks\base\data\sounds\handing15_A515

X:\Work\a515_0218\a515\alps\vendor\mediatek\handing15_a515

5.Android中如何设置RadioButton在文字的右边,图标在左边???
 解决方法  :
 第一步:
 android:button="@null"这条语句将原来系统的RadioButton图标给隐藏起来。
 第二步:
  android:drawableRight="@android:drawable/btn_radio"这条语句
 在原来图标的右边添加一个系统自带的btn_radio图标,我想RadioButton就是在btn_radio图标上进行封装而已。
 <RadioGroup
         android:id="@+id/radioGroup1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
 
 <RadioButton
             android:id="@+id/button1"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
            android:button="@null"
             android:checked="true"
             android:drawableRight="@android:drawable/btn_radio"
             android:paddingLeft="10dp"
             android:text="RadioButton" />
 </RadioGroup>

6.开关机动画及图片修改

开机动画开关 
system/core/rootdir/etc/init.goldfish.sh  
setprop debug.sf.nobootanimation 0

mediatek\custom\taibo13_gb\system\bootanim\bootanimation 
mediatek\custom\taibo13_gb\system\bootanim\shutanimation

第一二张图片位置 
\mediatek\custom\common\uboot\logo\wvga\wvga_kernel.bmp 
\mediatek\custom\common\uboot\logo\wvga\wvga_uboot.bmp

MTK用bmp_to_raw转换成boot_logo文件,脚本在update文件,此文件在文件系统中media-images-boot_logo文件

第三张图片位置(如果没有开关机动画 开关机就会调用此处图片) 
/frameworks/base/core/res/asserts/images/android-logo-mask.png 
/frameworks/base/core/res/asserts/images/android-logo-shine.png

frameworks/base/core/java/com/android/internal/app/ShutdownThread.java 
/frameworks/base/cmds/bootanimation/BootAnimation.cpp 
/frameworks/base/cmds/bootanimation/BootAnimation.h 
/frameworks/base/cmds/bootanimation/bootanimation_main.cpp 
关机时去掉弹出框: 
在ShutdownThread.java文件里找到beginShutdownSequence函数把mShutOffAnimation置为ture 
然后把shutdownanimation.zip加到系统目录中,其制作可以参照下面文档

去掉关机充电进度条显示 
快速开机  off: 
/mediatek/platform/mt6573/uboot/mt6573_logo.c 
快速开机  on: 
/mediatek/source/external/ipod/bootlogo.c

去掉mt65xx_disp_draw_prog_bar函数

关于shutdownanimation.zip的制作:

开始写desc.txt 这个文件里面的命令。 
desc.txt里面的命令格式如下: 
480 800 30 
p 1 0 part0 
p 0 0 part1 
480 800意思是说你开机动画在屏幕先以多少的分辨率显示,注意不要超过480x854的分辨率, 
否则你的画面就显示不全了。 
30 这个数字是代表着每秒播放的帧数,打个比方,part0文件夹里面共76个图片, 
播放时间就是76/30=2.533333秒播放完毕,当然在手机里面会有一定的延时,尤其是你的图片文件 
比较大的情况下,手机想播快也快不起来,卡啊 
p 1(代表着播放一次) 0(空指令)part0  */这句指令就代表这part0文件夹内的图片只按名称顺序播放一次 
p 0(重复播放)0 (空指令)part1 */这一句指令代表着part1文件夹内的图片会循环反复播放 
还有一种是指令 
p 0 10 part1 这里面的那个10代表着播放完part1文件夹内的图片一遍之后稍作停顿,然后再循环播放一遍, 
再停顿少许,再播放,再停顿稍许·········重复下去 
p 1 10 part1  同理,这句代表着播放完part1文件夹内的图片之后稍作停顿然后继续执行下一条命令。 
图片准备好了,desc.txt里面的命令准备好了,就可以把他们一起打包压缩成zip格式了。 
记住,是zip格式,而不是rar格式。另外压缩的时候注意一点,压缩的时候压缩方式要选择存储,否则开机时 
手机会不认的。开机的时候会黑着没动画一直到进入桌面为止。 
如果压缩完太大,重新解压用JPEG Imager软件处理再压缩zip格式。建议不要大于6M。 
压缩文件重命名为bootanimation.zip之后,放在sd卡里面,按照之前的路径替换、重启

试试下面的命令吧。

adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n breakan.test/breakan.test.TestActivity
或简单一些。

adb shell am start -n breakan.test/breakan.test.TestActivity
其中"breakan.test/breakan.test.TestActivity"中的"breakan.test"是程序的包名,"TestActivity"是程序Activity类的类名。

import com.mediatek.featureoption.FeatureOption;

PRODUCT_LOCALES := en_US fr_FR it_IT es_ES de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN ru_RU ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR rm_CH sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS uk_UA vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET hi_IN

108TP 按键坐标
Left:  48,900
Right: 376,900
四个键的坐标
80,900 220,900 376,900 420,900

480 854 8
p 1 0 folder1
p 0 0 folder2

start { act= android.search.action.GLOBAL_SEARCH }
com.android.quicksearchbox.SearchActivity
7.

[FAQ04326] 怎么添加一种语言
Platform:MT6573MT6575
Branch:GB2ICS
[Description]
怎么添加语言支持计划中的语言?
 
怎么添加一种新语言?
 
[Solution]
 
一、怎么添加语言支持计划中的语言?
 
请打开如下makefile文件:
 
build/target/product/${Project}.mk (其中${Project} 是贵司工程名)
 
找到变量 PRODUCT_LOCALES,把所需的语言添加进去,比如添加越南语,则增加“vi_VN \”,其中vi是越南语的简称,VN是越南的简称 ;
 
若在 build/target/product/${Project}.mk 找不到变量 PRODUCT_LOCALES,请打开文件:mediatek/config/${Project}/ProjectConfig.mk
 
找到宏 MTK_PRODUCT_LOCALES,把所需的语言添加进去,比如添加越南语,则增加“vi_VN ”
 
 
二、怎么添加一种新语言(该语言不在支持计划中)?
 
   1)     为Android平台添加语言集,须确保Framework和每个App都做了相应语言的字符串翻译.

2)     按照Android资源规则把字符串资源放到 Framework和每个App里面.
 
 在build/target/product/${Project}.mk 的PRODUCT_LOCALES下添加你需要的语言,需要确保的是你加入的语言需要满足下面的规则:
 
a)    语言代码:ISO 639
 
b)    国家代码:ISO 3166-1
 
c)    确保在路径framework\base\core\res\res下有相应 语言的资源文件夹
 
   3)     重新make工程就OK. 
 
注意:若第 2)步找不到变量 PRODUCT_LOCALES,请到mediatek/config/${Project}/ProjectConfig.mk寻找宏 MTK_PRODUCT_LOCALES;
 
添加不在支持计划中的语言很麻烦,比如添加阿拉伯语并不只是像印欧语系那样更改xml和makefile文件就可以的,这里面还涉及很多代码的更改;
 
敝司现在开发了一款字符串翻译工具,叫:StringTranslationTool,可以将系统中的字符串提取出来,转换成Excel文档,贵司可以在该文档中将字符串翻译成所需的语言,然后通过该工具读取Excel文档,更新系统代码,为新语言生成strings.xml文件。

请参考 DCC 上面文档:
 
Android Language Support FAQ.pptx
 
Android Language Introduction.docx
 
8.android屏幕旋转时,Activity不重新调用onCreate的方法 
当手机转屏时,Activity的onDestroy和onCreate方法会被调用
 为了避免Activity在转屏时销毁:
1)修改AndroidManifest.xml
     在activity属性中加入: 
     android:configChanges=”orientation|keyboardHidden”
  android:configChanges,这个方法主要是负责列出清单,当清单上用户指定的设置改变时,Activity会自己处理这些变化。
orientation,屏幕界面旋转(可能是用户手动旋转的),【注意:如果你的开发API等级等于或高于13,你还需要设置screenSize,因为screenSize会在屏幕旋转时改变】
keyboardHidden,键盘辅助功能改变
例如:
 <activity android:theme="@style/ContentOverlay"
        android:launchMode="singleTask"
android:configChanges="keyboardHidden|orientation|screenSize"                           
android:windowSoftInputMode="adjustPan|stateAlwaysVisible" android:name="com.weibo.net.ShareActivity">
</activity>

8.android 屏幕设置相关
锁屏设置:
 1. 初始值 : <integer name="def_screen_off_timeout">60000</integer>
 2. 数据库/data/data/com.android.providers.settings/databases/settings.db中
         system 表 screen_off_timeout.
 3. 开机锁屏, 在frameworks/policies/base/phone/com/android/internal/policy/impl/KeyguardViewMediator.java 文件中修改 mExternallyEnabled 值为false即可. 或者调用setKeyguardEnabled来解锁.
 4. 程序禁止锁屏:
 方法一:
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
 方法二:         
    mWakeLock = pManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
                                     | PowerManager.ON_AFTER_RELEASE, TAG);
    mWakeLock.acquire();
 
参考: 
android禁止锁频  http://my.unix-center.net/~Simon_fu/?p=538

锁屏方法和android事件处理过程分析  http://blog.sina.com.cn/s/blog_3e3fcadd0100hrzf.html

Android下Dialog及Activity屏蔽Home键详解    http://www.linuxidc.com/Linux/2011-10/46150p2.htm

相关参数:
 screen_brightness_mode : 锁屏模式, 
        0 = 手动锁屏
         1 = 自动锁屏
 private static final int SCREEN_ON_BIT          = 0x00000001;
     屏幕亮
 private static final int SCREEN_BRIGHT_BIT      = 0x00000002;
     屏幕背光亮
 private static final int BUTTON_BRIGHT_BIT      = 0x00000004;
     按钮背光亮
 private static final int KEYBOARD_BRIGHT_BIT    = 0x00000008;
     键盘背光亮
 private static final intBATTERY_LOW_BIT        = 0x00000010;
     电池电量低
 SCREEN_OFF    : 全部灭掉
 SCREEN_DIM    : 只有屏幕暗色
 SCREEN_BRIGHT : 屏幕和屏幕背光亮
 SCREEN_BUTTON_BRIGHT : 屏幕和按钮亮
 ALL_BRIGHT    : 全部都亮
 
设置屏幕超时时间:
PowerManagerService中的 setScreenOffTimeoutsLocked 函数.

屏幕休眠过程:
 1.任何输入事件会调用PowerManagerService的 userActivity函数来设置一段时间内电源的状态以及屏幕状态, 改函数会调用 setTimeoutLocked来设置屏幕为SCREEN_BRIGH. setTimeoutLocked会在原来超时值的基础上加上屏幕超时时间(mKeylightDelay), 等待SCREEN_BRIGH超时后判断屏幕暗色时间(mDimDelay)是否大于0, 若是则设置屏幕为SCREEN_DIM. 等SCREEN_DIM超时后设置SCREEN_OFF来关闭整个屏幕亮度.
   总的来说屏幕调度过程是:

SCREEN_BRIGH --> SCREEN_DIM --> SCREEN_OFF -->  close
                      mKeylightDelay      mDimDelay          mScreenOffDelay
 
当设置POKE_LOCK_SHORT_TIMEOUT标志时: mKeylightDelay = 6s 其他时间为0
 当设置POKE_LOCK_MEDIUM_TIMEOUT标志时: mKeylightDelay = 15s 其他时间为0
 其他时: 
mKeylightDelay = 6s, 
mDimDelay = screen_off_timeout - mKeylightDelay - LONG_DIM_TIME(7s);
 mScreenOffDelay = LONG_DIM_TIME(7);
 
也就是说系统全亮持续时间为6s, 大部分都是屏幕和背光亮,暗屏持续时间为7s.

updateLightsLocked : 最终更新亮度配置,  背光亮度控制设备有: lcd, 按钮和键盘!

关闭系统屏保:
 mKeyguardManager= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
 mKeyguardLock= mKeyguardManager.newKeyguardLock("");
 mKeyguardLock.disableKeyguard();

KeyguardManager只是负责WindowsManager服务中锁相关的一个接口类.
 
disableKeyguard需要的权限: DISABLE_KEYGUARD,DevicePolicyManager中密码检查。
 
==========================================================================
 
TokenWatcher 辅助类,帮助管理IBinder成员引用计数,主要通过acquire 和 release来绑定和释放IBinder成员, 并且判断从无到有或者从有到无时调用抽象成员acquire 和 release来通知子类事件的发生。 该类继承java.lang.Object类, 可使用wait和notify锁机制。

mKeyguardTokenWatcher 是WindowManagerService.java文件中的一个TokenWatcher子类对象。当禁用锁时调用 mPolicy.enableKeyguard(false), 当使能锁时调用mPolicy.enableKeyguard(true)。 只要有一个IBinder禁止使用锁的话,android的锁屏界面就不会出来。 当锁屏界面在的时候,mKeyguardDisabled=false, 当禁用锁屏界面时mKeyguardDisabled=true.

WindowManagerService的 disableKeyguard和reenableKeyguard方法就是通过mKeyguardTokenWatcher变量控制锁屏和解锁屏的。锁屏还涉及到设备策略管理的状态,接受到设备状态变化的广播(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED)时,会锁屏。

PolicyManager 策略管理抽象类,静态函数, 通过"com.android.internal.policy.impl.Policy"类名查找相应的策略类,对于手机来说路径为frameworks/policies/base/phone/com/android/internal/policy/impl/Policy.java 中的类。可以创建 PhoneWindow, PhoneLayoutInflater, PhoneWindowManager三个类对象出来。

在WindowManagerService中的 mPolicy.enableKeyguard实际调用到了 PhoneWindowManager中的enableKeyguard, 继而调用KeyguardViewMediator中的setKeyguardEnabled方法。

输入事件流程:
 preprocessEvent
    -->  mPolicy.preprocessInputEventTq  处理滑盖等事件,返回true则终止往下执行
    -->  mPolicy.interceptKeyTq 返回动作:睡眠,到用户,到界面,什么都不干。
    -->  睡眠  mPowerManager.goToSleep, 受mStayOnConditions变量影响
    -->  界面  mPowerManager.userActivity 
        --> 若屏幕关着,则返回
         --> setPowerState 和 setTimeoutLocked(time, SCREEN_BRIGHT)
         --> mPolicy.userActivity(取消锁,并等待超时锁)

interceptKeyTq: 判断屏幕是否亮以及锁是否存在执行不同的操作。
    如果屏锁着并且亮着,则传递给用户
    如果屏锁着但没亮着,不传递给用户并判断是否唤醒屏幕。如果能唤醒的话则准备好锁界面,isWakeKeyWhenKeyguardShowing 这个函数是硬编码排除一些键的唤醒屏幕功能。
    若果屏不锁且灭着,  1)电话中并是音量键则不传递用户,直接控制音量
                    2)若是唤醒键则传递给用户界面(ACTIVITY)
            3)默认传递给用户
    如果屏不锁且亮, 默认传递给用户
 ==================================继续往下执行================
    如果输入的是挂机和电源键则处理一些通话事件,电源键按下时若屏亮则检测是否为长按事件并且该事件不传递给用户,否则什么都不做。  若果屏亮着按下电源键则进入睡眠状态(ACTION_GO_TO_SLEEP).
    如果输入的是一些媒体键并且不是传递给用户的,则发送广播!
    处理电话接口的一些事件(接听,振铃静音等)
 查询屏幕状态可使用如下方法:
    mPowerManager.isScreenOn();
    mPowerManager.isScreenBright();
    mKeyguardMediator.isShowingAndNotHidden();// 屏幕亮的话用这个方法
    mKeyguardMediator.isShowing());  // 屏幕灭的话用这个方法
 
9. 实现通话定时6秒灭屏
修改如下两个文件:
CallNotifier.java PhoneApp.java
把 ScreenTimeoutDuration.DEFAULT 改为 ScreenTimeoutDuration.SHORT
 
10. 如何使用AUTO_ADD_GLOBAL_DEFINE_BY_NAME/AUTO_ADD_GLOBAL_DEFINE_BY_VALUE/AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VA 
AUTO_ADD_GLOBAL_DEFINE_BY_NAME/AUTO_ADD_GLOBAL_DEFINE_BY_VALUE/AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE是编译系统开出的3个可以将ProjectConfig.mk中的宏(注意添加的宏必须大写)添加到C/C++源文件的接口。

AUTO_ADD_GLOBAL_DEFINE_BY_NAME
 
AUTO_ADD_GLOBAL_DEFINE_BY_VALUE
 
AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE

详细如下:
 
(1) AUTO_ADD_GLOBAL_DEFINE_BY_NAME:
 
如果你希望定义一个宏开关(作为一个功能模块的开关),然后在源文件(*.c/h等使用到这个宏开关),比如你定义了一个XXX_SUPPORT这个宏的值只有yes和no。那么你可以在
 
ProjectConfig.mk中定义:
 
XXX_SUPPORT = yes
 
但是这样定义在源文件是找不到XXX_SUPPORT的,因此需要加入AUTO_ADD_GLOBAL_DEFINE_BY_NAME,加入之后就可以在源文件使用了,比如aa.c中:
 
#ifdef XXX_SUPPORT
 
......
 
#endif
 
注意:如果添加的宏的值为no/none/false(无论大小写),那么该宏不会被添加进去。

(2) AUTO_ADD_GLOBAL_DEFINE_BY_VALUE:
 
同上,但是差别在于你希望将宏的值传给源文件,比如定义了:
 
XXX_TP = CTP#RTP or CTP
 
你希望在代码中去判断当前使用了RTP还是CTP,那么可以将XXX_TP加入AUTO_ADD_GLOBAL_DEFINE_BY_VALUE
 
这样在源文件中就可以引用了,比如aa.c中:
 
#ifdef CTP
 
......
 
#elif RTP
 
......
 
#endif
 
(3) AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE:
 
它与AUTO_ADD_GLOBAL_DEFINE_BY_NAME差别在于AUTO_ADD_GLOBAL_DEFINE_BY_NAME只有定义和没有定义之分,而AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE还可以知道它的值是多少(注意这个值是字符串),比如:
 
XXX_NUM = 1#1 or 2
 
那么加入AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE之后:
 
在源文件中就可以这样用(比如aa.c):
 
if (!strcmp(XXX_NUM, "1"))
 
{
 
}
else
{
 
}

11.摄像头旋转
在cfg_tuning_mt6575.h 
SensorOrientation_T const&
getSensorOrientation()
{
   static SensorOrientation_T inst = {
       u4Degree_0  : 270,   //  main sensor in degree (0, 90, 180, 270)
       u4Degree_1  : 90,    //  sub  sensor in degree (0, 90, 180, 270) //270
   };
 
12.当修改一些代码时,使用什么编译命令可以最有效率
 [SOLUTION]

(1) ./mk n(r) kernel; ./mk bootimage;当修改kernel相关代码时,要使用此命令,具体如下:

alps/kernel/

alps/mediatek/platform/mt65xx/kernel/

alps/mediatek/source/kernel/

alps/mediatek/customer/mt65xx/kernel/

alps/mediatek/customer/common/kernel/

alps/mediatek/customer/$porject_name$/kernel

......

(2) ./mk n pl  当修改preloader相关代码时,要使用此命令,具体如下:

alps/mediatek/platform/mt65xx/preloader/

alps/mediatek/source/preloader/

alps/mediatek/customer/mt65xx/preloader/

alps/mediatek/customer/common/preloader/

alps/mediatek/customer/$porject_name$/kernle

......

(3) ./mk uboot  当修改uboot相关代码时,要使用此命令,具体如下:

alps/mediatek/platform/mt65xx/uboot/

alps/mediatek/source/uboot/

alps/bootable/bootloader/uboot/

alps/mediatek/customer/mt65xx/uboot/

alps/mediatek/customer/common/buoot/

alps/mediatek/customer/$porject_name$/uboot/

......

(4) ./mk systemimage 当修改system相关代码时使用此命令,具体如下:

alps/frameworks/

alps/packages/

alps/vendor/

alps/hardware/

alps/dalvik/

...........

(5) ./mk recoverimage  当修改recover相关代码时使用此命令,具体如下:

alps/bootable/recovery/

alps/mediatek/customer/$project_name$/recovery/

......

(6) ./mk factoryimage:  当修改factory相关代码时使用此命令,具体如下:

alps/mediatek/customer/$project_name$/factory/

alps/mediatek/customer/common/factory/

alps/mediatek/source/factory/

......

(7) ./mk secroimage  当修改secro相关代码时使用此命令,具体如下:

alps/mediatek/source/secro/

alps/mediatek/customer/$project_name$/secro/

.....

13.[FAQ04354] 内存不足时查看内存使用情况的一些adb command

Platform:MT6573MT6575MT6577MT6589
Branch:GB2ICSICS2JB

请参考如下1)2)3)条信息,请贵司先做初步分析,若需要敝司协助,请帮忙提供下面的信息,以加快问题解决速度。

1) 使用adb shell cat /proc/meminfo 命令,查看剩余的空间还有多少,通常的系统剩余空间是: MemFree + cached

如下看到的系统剩余空间是:5616K + 158632K

cat proc/meminfo
           MemTotal:         483724 kB
           MemFree:            5616 kB
           Buffers:            2732 kB
           Cached:           158632 kB
           SwapCached:            0 kB
           Active:           277336 kB
           Inactive:          83232 kB
          Active(anon):     197452 kB

需要注意的是,在setting->apps->running app里面看到的剩余空间是上述MemFree + cached + background running app memory - SECOND_SERVER_MEM,具体的计算方法参考:RunningProcessView.java(/alps/package/apps/settings/src/com/android/setting/applications)里面的void refreshUi(boolean dataChanged)函数

2) 使用adb shell procrank 命令(仅ENG版本可用),查看有哪些app占用内存过多,请以PSS栏位为参考,重点关注自己安装的一些APK以及PSS值比较大的process

adb shell procrank
        PID      Vss      Rss      Pss      Uss  cmdline
        476   65312K   65284K   38499K   35560K  com.android.launcher
       268   54916K   54880K   30001K   27000K  system_server
       110   32196K   28988K   18924K   12432K  /system/bin/surfaceflinger
       347   42400K   42320K   15445K   10704K  com.android.systemui

3) 对于2)中占用比较异常的process,可以透过 adb shell showmap [pid](仅ENG版本可用)查看具体使用情况。以system_server 为例,先adb shell ps system_server得到pid:

adb shell ps system_server

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
         system    268   111   406736 54876 ffffffff 400e9c70 S system_server

再  adb shell showmap 268查看各个.so以及 heap,stack的使用情况,做初步的判断(同样以PSS栏位参考)

adb shell showmap 268
        virtual                     shared   shared  private  private
          size      RSS      PSS    clean    dirty    clean    dirty    # object
     -------- -------- -------- -------- -------- -------- -------- ---- ------------------------------
          72       20       20        0        0       20        0    1 /data/dalvik-cache/system@app@SettingsProvider.apk@classes.dex
          352      148      103       32       16       48       52   18 /data/dalvik-cache/system@framework@android.policy.jar@classes.dex
         1348       28        8       20        0        8        0    1 /data/dalvik-cache/system@framework@apache-xml.jar@classes.dex
          956       60       13       52        0        8        0    1 /data/dalvik-cache/system@framework@bouncycastle.jar@classes.dex
          24        8        0        8        0        0        0    1 /data/dalvik-cache/system@framework@core-junit.jar@classes.dex
         3292     1056      126     1012        0       44        0    1 /data/dalvik-cache/system@framework@core.jar@classes.dex

14.android如何使得电阻屏在第一次开机时自动叫起屏幕校准程序
Android系统中有一个Provision程序,只会在第一次开机时运行一次,它会将Settings.Secure.DEVICE_PROVISIONED的值设置为1,随后就把自己disable掉 ,那么我们可以在此App被disable掉之前,做一些动作,可以达到第一次开机运行程序的效果,例如开机第一次自动启动屏幕校准程序,改动如下:
 
在alps/packages/apps/Provision/src/com/android/provision/DefaultActivity.java文件中,
 
先导入import android.content.Intent;
 
在onCreate方法的最后两条语句之前,加上如下代码:
 
      ......
 
        //add start
 
         this.getWindow().setType(WindowManager.LayoutParams.TYPE_TOP_MOST); //为了防止系统弹出的Dialog挡住当前校准界面,设定该Activity在最上方不被盖住
 
         startActivity(new Intent("com.mediatek.app.touchpanel.start"));
 
         //add end
 
 
 
        ComponentName name = new ComponentName(this, DefaultActivity.class);
 
        pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
 
        // terminate the activity.
 
        finish();
 
        ......

然后,在alps/mediatek/source/packages/TouchScreenCalibrator/AndroidManifest.xml文件中,在Calibrator的activity属性中,添加一个intent-filter
 
<activity android:name=".Calibrator"
 
                  android:label="@string/app_name">
 
            <intent-filter>
 
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
 
            </intent-filter>
 
            <intent-filter>
 
                <action android:name="com.mediatek.app.touchpanel.start" />
 
                <category android:name="android.intent.category.DEFAULT" />
 
            </intent-filter>
 
        </activity>

15. Wifi地址 
在 CFG_WIFI_Default.h  WIFI_CFG_PARAM_STRUCT stWifiCfgDefault = {。。。}
蓝牙地址
在 CFG_BT_Default.h  static ap_nvram_btradio_mt6610_struct stBtDefault = {。。。}

16. 设置串品Uart为Log输出端口
在 cust_bldr.h 
#define CFG_LOG_BAUDRATE        (921600)
#define CFG_UART_LOG            (UART1)

17. build.prop详解
=================================================================
build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变
 
以下是修改教程及一些build.prop参数的中英文对照解释,修改前,注意先备份原build.prop
 
build.prop的位置是在/system/bulid.prop
修改build.prop文件方法:
直接编辑原文件的方法。
方法一:
1、在手机上用RE复制build.prop文件到SD卡。
2、USB方式连接手机到电脑。
4、找到build.prop文件,用记事本打开。
------------
也可以在手机上,用RE管理器以文本方式打开
---------(版本等信息,可以根据下面的对照修改成自己的个人信息无妨)-------------
 
这是转的帖子,ARC的内容可以和下面的不太一样。自己变通下。
 
下面是一些解释:
 
ro.build.version.release=2.2.1              ROM版本
ro.build.date=三 12月 15 20:41:26 CST 2010                   时区时间CST可以代表4个时区,这个百度一下
ro.build.host=HPA008                              这个好像是机器的CID代码一样,不确定
ro.product.model=Desire HD                   型号
ro.build.description=1.75.1400.4 CL303327 release-keys
ro.build.description=1.75.1400.4 CL303327 release-keys                      内部版本号
ro.sf.lcd_density=240      这个好像和一些软件全屏有关系,调小有些软件不能全屏好像是
# Default network type.                            默认网络类型,貌似是这样
# 0 => WCDMA preferred.
ro.telephony.default_network=0
wifi.interface=eth0
wifi.supplicant_scan_interval=15              WIFI扫描时间
ro.product.cpu.abi=armeabi-v6j                  这个应该是CPU的型号
wifi.supplicant_scan_interval=30             这是WIFI扫描时间
settings.display.autobacklight=1       自动背光默认为开
ro.sf.lcd_density=160                    打开软件全屏大小,不建议改这个,原版界面的,改了你会后悔的。
dalvik.vm.execution-mode=int:jit               打开超频模式
dalvik.vm.heapsize=32m                             虚拟内存
ro.config.msg_notification=F1_New_SMS.ogg           默认信息通知铃声
ro.setupwizard.mode=OPTIONAL          这里是第一次开机的向导,optional是可选!ENABLED为显示,DISABLED为禁止
ro.semc.timescape_keys=Sony_Ericsson_Xperia
debug.sf.nobootanimation=0                     这里是控制开机动画的,0为关闭,1为开启!
ro.config.hwfeature_wakeupkey=3
ro.config.hw_menu_unlockscreen=true
                                                 ——这两个是控制唤醒屏幕的设置,3应该是菜单键
ro.setupwizard.mode=DISABLED                      开机出现的帐号设置向导,ENABLED为显示,DISABLED为禁用,
OPTIONAL为可选
ro.config.ringtone=QuietlyBrilliant.mp3              默认来电铃声
ro.config.notification_sound=Zeta.mp3             默认通知铃声
ro.config.alarm_alert=NewDay.mp3                  默认闹钟铃声
ro.config.hwfeature_wakeupkey=3,修改完成后重启手机,就可用电源键、确认键、挂机键、接听键唤醒屏幕
ro.sf.lcd_density=240  这个是DPI,sense rom根本不要改,改了会后悔的,cm系列rom可以改成200甚至180
ro.build.date=三 12月 15 20:41:26 CST 2010  这个根本不用管,这个是官方ROM的做成的日期
ro.product.locale.language=zh          刷机后默认语言
ro.product.locale.region=CN             刷机后启动的默认语言   这个不是刷机后的默认语言,这个只是强制区域,
也就是出现第一次锁屏还没有连接基站的时候,强制设置区域为zh_CN
刷机后默认语言是在system/customize/default.xml里面改的
ro.config.hw_temperature_warn=true                         这就是论坛上那个温度检测关机的开关
ro.config.lowbattery_shutdown=1                            低电量自动关机
ro.config.hwfeature_wakeupkey=0                           
ro.config.endkeybehavior=true                 关机键行为开启
ro.config.haptic_disable=true                    关闭触感反应
view.touch_slop=15    (触摸屏灵敏度,数值越大越灵敏)
view.minimum_fling_velocity=25  (滑动速度)
view.scroll_friction=0.008  (滑动误差)
# RIL specific configuration.  (特定设置)
red]ro.ril.def.agps.mode=2 (打开AGPS服务支持,可改为ro.ril.def.agps.mode=0  改后能省电但GPS定位速度会变慢)
ro.product.multi_touch_enabled=true    支持多点触摸
ro.product.max_num_touch=2              触摸点为最多2点!
文件一共给修改了5处:
dalvik.vm.heapsize=32m,  单个虚拟机可以使用的内存空间从24M扩展到32M。
debug.sf.hw=1,原来的值是0。这个是启用了硬件GUI渲染。
media.stagefright.enable-meta=true
media.stagefright.enable-scan=true
media.stagefright.enable-http=true 原来这3个设定都是false,也就是启用了stagefright引擎,但没有设置
media.stagefright.enable-player=true

=============================
 
18. android系统开发中个人小问题汇总 
(1)开机不停震动
手机开机,马达一直震动,应该是uboot正常启动后,没有设置震动关闭
解决:在震动200ms后关闭马达
u-boot/property/normal_mode.c
void normal_mode(void)
{
//MMU_Init(CONFIG_MMU_TABLE_ADDR);
vibrator_hw_init();

set_vibrator(1);
udelay(200*1000);
set_vibrator(0);
...
}

(2)关机震动时间设置
frameworks/base/core/java/com/android/internal/app/ShutdownThread.java中
private static final int SHUTDOWN_VIBRATE_MS = 500;   //默认震动0.5秒,修改这个参数

(3)设置系统默认音量
修改文件:frameworks/base/media/java/android/media/AudioManager.java
public static final int[] DEFAULT_STREAM_VOLUME = new int[] {
        4,  // STREAM_VOICE_CALL
        7,  // STREAM_SYSTEM
        5,  // STREAM_RING
        11, // STREAM_MUSIC
        6,  // STREAM_ALARM
        5,  // STREAM_NOTIFICATION
        7,  // STREAM_BLUETOOTH_SCO
        11, // STREAM_FM
        11, // STREAM_DTMF
        11, // STREAM_TTS
        7  // STREAM_SYSTEM_ENFORCED
    };
根据需要进行修改即可。
注意:如果在3rdparty里面有同名文件最好一起修改。

(4)如何调节音量档位
需要根据自己的情况来调整index to volume的算法。
相关实现的模块是 AudioPolicy。基类 AudioPolicyManagerBase 文件位于
framework/base/services/audioflinger/AudioPolicyManagerBase.cpp
实现类 AudioPolicyManagerALSA,位于
external/sprd/alsa/alsa_sound/AudioPolicyManagerALSA.cpp
函数 computeVolume:
这个方法平台目前没有用子类实现,所以走的是基类方法。如果客户需要修改,建议在子类中重载这
个方法。
再讲下基类方法:
1 通过 index 算出一个百分比;
2 通过这个百分比经过一个对数转换换成音量的百分比;
3 特殊情况的一些转换;
修改建议是子类的方法应该调用基类的方法并且做微调。
比如对 1,将 index 到百分比的对应关系略微修改。
比如对 3,可以把基类方法处理的结果在根据需要调整。

(5)电池相关
若手机界面的电池进度条显示不够准确,请根据实际测试值调整kernel\drivers\ power\charge.c 的voltage_capacity_table表格中的值 15%对应的是低电告警电压,而0%是自动关机电压。
电池的报警电压调整:frameworks\base\core\res\res\values\config.xml,
config_lowBatteryWarningLevel:15----->百分比,可以动态调整该数值来调整低电电压。
过压保护的逻辑在:
Kernel\drivers\power\sprd_power.c里
charge_handler()函数中有个battery_data->over_voltage用于电压保护逻辑。
这个数值的来源是Kernel\arch\arm\mach-sc8810\include\mach\chg_drvapi.h
#define OVP_OVER_VOL 6500

(6)修改系统默认时间:
修改\idh.code\kernel\drivers\rtc\ rtc-sprd.c
static int __init sprd_rtc_init(void)
{
......
sec_2011_to_1970 = mktime(2011, 1, 1, 0, 0, 0);
return 0;
}
mktime函数的参数即是修改点。
同时还要同步修改闹钟时间,否则闹钟会有问题。
packages\apps\DeskClock\src\com\android\deskclock\Alarms.java
private static void alarm_flag_setup(final long alarmTimeInMillis) {
Calendar c = Calendar.getInstance();
c.set(2011, 0, 1, 0, 0, 0);//注意这里月份是0代表1月
......

(7)如何设置版本号
定义 android 版本号的地方在 build/tools/buildinfo.sh 内,可以修改此文件。
ro.build.display.id=$BUILD_DISPLAY_ID 改为 ro.build.display.id= $BUILD_D ISPLAY_ID_CUSTOM, 然 后 在customize/custom_cfg/proj_name/res/boardconfig.mk
下 定 义 宏BUILD_DISPLAY_ID_CUSTOM 就可以为自己的项目定义版本号.
显示硬件版本在设置->关于手机->硬件版本里看到:
packages/apps/Settings/res/xml/device_info_settings.xml
<Preference android:key="hardware_number"
style="?android:preferenceInformationStyle"
android:title="@string/hard_version"
android:summary="1.1.0"/>

(8)无接近传感器,如何在开始通话后关闭屏幕
在 Phone 应用的 phoneApp 这个类中。找到下边这段代码:
mProximityWakeLock =
pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, LOG_TAG);
然后注释掉。这个是获取了接近传感器的 WakeLock。然后在 updatePokeLock 这个方法中。将
//pokeLockSetting |= LocalPowerManager.POKE_LOCK_MEDIUM_TIMEOUT;
改为
pokeLockSetting |= LocalPowerManager.POKE_LOCK_SHORT_TIMEOUT;
将updateWakeState 方法中
setScreenTimeout(ScreenTimeoutDuration.DEFAULT);
改为
setScreenTimeout(ScreenTimeoutDuration.SHORT);
这个是将默认延时时间设置为SHORT(5秒)。如果需要改为其他时间需要去改 setScreenTimeout
这个方法。

(9)ms,mms,contact 容量限制
[适用版本]2.3.5
1.只要在容量允许的情况下,sms,mms 接收条数是没有限制的,但是每个会话的条数是有限
制的,默认情况下,每个会话的短信限存 200 条,彩信限存 20 条,但是能调整到 5000 条。
MmsConfig.java 代码中做了如下限制:
private static int mDefaultSMSMessagesPerThread = 200;// default value
private static int mMinMessageCountPerThread = 2; // default value
private static int mMaxMessageCountPerThread = 5000; // default value
private static int mDefaultMMSMessagesPerThread = 20; // default value
2.contact 的记录总数目前没有限制。

(10)单摄像头进入时间较长如何解决
在customize/customer_cfg/project.../kernel/camera/camera_cfg.c中main_sensor_infor_tab和sub_sensor_infor_tab里会放很多sensor的结构体;camera启动初始化时,底层驱动会匹配相关的菜单,删除没有的sensor,能加快启动

(11)客户定制开/关机铃声
开机:替换 3rdparty/anim/poweranim/special/bin/startupsound
关机:替换 3rdparty/anim/poweranim/special/bin/shutdownsound
注:这里的startupsound/shutdownsound可以是mp3或者ogg格式的,替换时不需要扩展名

(12)背光亮度,静音等默认值修改
修改\frameworks\base\packages\SettingsProvider\res\values\defaults.xml中的默认值即可。

(13)浏览器如何修改内置的“搜索引擎”
修改packages\apps\browser\res\values\donoottranslate-search_engines,xml文件,中
“search_engines”的string-arry中的item项即可。如下事例为内置了 139/百度/google 三个搜索引
擎。
<item>search139</item>
<item>baidu</item>
</string-array>
<item>google</item>
<string-array name="search_engines" translatable="false">
注意:如果支持多种语言,其他文件下的同名文件donoottranslate-search_engines,xml也需要
修改。

(14)关机充电动画修改
关机充电动画的资源路径是:
external/sprd/charge/res/images/(展讯平台)
将这个目录下的 png 图片文件修改客户需要的文件就可以了。
 
(15)关机菜单中如何添加重启选项
/frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java" 文件添加如下修改部分即可:
mItems = Lists.newArrayList(
// silent mode
mSilentModeToggle,
// next: airplane mode
mAirplaneModeOn,
new SinglePressAction(
                        com.android.internal.R.drawable.ic_lock_power_off,
                        R.string.global_action_power_off) {
                    public void onPress() {
          // shutdown by making sure radio and power are handled accordingly.
                        ShutdownThread.shutdown(mContext, true);
                    }

public boolean showDuringKeyguard() {
                        return true;
                    }

public boolean showBeforeProvisioning() {
                        return true;
                    }
                },
// add for reboot
new SinglePressAction(
         com.android.internal.R.drawable.ic_lock_power_off, //替换成相应的图
         R.string.global_action_power_off) { //替换成相应的提示文字
         public void onPress() {
           ShutdownThread.reboot(mContext, null, true);
         }

public boolean showDuringKeyguard() {
           return true;
         }

public boolean showBeforeProvisioning() {
           return true;
         }
      });
//end add

(16) 如何修改系统默认输入法
下面将以“谷歌拼音输入法”为例,进行解释和说明。
第一步 修改/frameworks/base/packages/SettingsProvider/res/values/defaults.xml 添加如下代码:
<string name="config_default_input_method"
translatable="false">com.android.inputmethod.pinyin/.PinyinIME</string>

com.android.inputmethod.pinyin 在 AndroidManifest 文件中的 packagename
.PinyinIME 在 AndroidManifest 文件中的service name
第二步:修改
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
在 private void loadSecureSettings(SQLiteDatabase db) 方法中,添加如下代码:
loadStringSetting( stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
R.string.config_default_input_method );

(17)如何在桌面预置应用程序图标
桌面预制的图标:是在 launcher2 的 default_workspace.xml中配置的,文件路径:
Launcher2\res\xml\default_workspace.xml

(18)添加搜索引擎
以添加139搜索引擎为例
a) 在packages/apps/Browser/res/values/all_search_engines.xml
<string-array name="search139" translatable="false">
<item>139</item>
<item></item>
<item>http://s.139.com/favicon.ico</item>
<item>http://s.139.com/search.do?q={searchTerms}&amp;category=downloadable|web|browseable&amp;tid=2123,2124,2125,2126&amp;fr=portalcustom2</item>
<item>UTF-8</item>
<item></item>
</string-array>
这6个<item>从上到下依次表示显示标签,关键字,搜索图标,搜索引擎地址,编码方式,搜索提示地址。
b) 在packages/apps/Browser/res/values/donottranslate-search_engines.xml
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array name="search_engines" translatable="false">
<item>search139</item>
<item>baidu</item>
<item>google</item>
<item>yahoo</item>
<item>bing</item>
</string-array>
</resources>
在这边将139搜索引擎添加进来。
这边添加的搜索引擎是将1中的添加的搜索引擎变成设置中选择搜索引擎的选项。

(19)修改 idle 界面搜索引擎的链接地址
packages/apps/quicksearchbox/res/values/strings.xml 下修改:
www.google.com为www.google.com.hk

(20)linux下ADB安装后增加设备权限:
/etc/udev/rules.d/51-Android.rules
SUBSYSTEM=="usb", SYSFS{"huawei"}=="12d1", MODE="0666"   //华为设备号
SUBSYSTEM=="usb", SYSFS{"Samsung"}=="04e8", MODE="0666"  //三星设备号

(21)Touchevent中,返回值是 true ,则说明消耗掉了这个事件,返回值是 false ,则没有消耗掉,会继续传递下去。
    在 View 中跟 Touch 相关的事件有 dispatchTouchEvent , interceptTouchEvnet , onTouchEvent 三种。 dispatchTouchEvent 是负责分发事件的,事件从 activity 传递出来之后,最先到达的就是最顶层 view 的 dispatchTouchEvent ,然后它进行分发,如果返回 false ,则交给这个 view 的 interceptTouchEvent 方法来决定是否要拦截这个事件,如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view 的 dispatchTouchEvent 再来开始这个事件的分发。
   如果事件传递到某一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件。(一次事件指的是 down 到 up 之间的一系列事件)
   
19. 没有p sensor时要求电话接通5s灭屏
 
[SOLUTION]
 
1 在packages\apps\phone\src\com\android\phone\CallNotifier.java中添加一个成员变量
 Call.State mLastCallState = Call.State.IDLE;
 然后在函数onPhoneStateChanged中的语句Phone fgPhone = mCM.getFgPhone();后添加以下代码
 Call.State ringCallState = mCM.getRingingPhone().getRingingCall().getState();
   Call.State fgCallState = mCM.getActiveFgCallState();
   if ((ringCallState==Call.State.IDLE && mLastCallState.isRinging()) ||//MT
    (fgCallState==Call.State.ACTIVE && mLastCallState.isDialing()))//MO
   {
                                 PhoneApp.getInstance().setScreenTimeout(PhoneApp.ScreenTimeoutDuration.SHORT);
   }
              mLastCallState = ringCallState.isRinging() ? ringCallState:fgCallState
 2 在PhoneApp.java (alps\packages\apps\phone\src\com\android\phone)的PhoneAppBroadcastReceiver 中onReceive()中调用pokeUserActivity():
 else if (action.equals(Intent.ACTION_HEADSET_PLUG))
 {..
 pokeUserActivity()
 ..}
 3 请您按下面的方法在PhoneApp.java中updateWakeState()方法中添加修改:
 

 setScreenTimeout(ScreenTimeoutDuration.DEFAULT);
 修改为:
         if (!isShowingCallScreen || isSpeakerInUse) {
             setScreenTimeout(ScreenTimeoutDuration.DEFAULT);
         } else {
             if (isDialerOpened) {
                 setScreenTimeout(ScreenTimeoutDuration.DEFAULT);
             } else {
                 setScreenTimeout(ScreenTimeoutDuration.SHORT);
             }
         }
 
20. 获取T卡上中文路径. 
 发送点击过来后取得的路径:  
 在对应的AndroidMainfest.xml中加入:(红色)  
 <intent-filter>  
                 <action android:name="android.intent.action.VIEW" />  
                 <data android:mimeType="text/plain" />  
 <category android:name="android.intent.category.DEFAULT" />  
 </intent-filter>  
   
 ――――――――――――――――――――――――――  
 Intent gIntent = getIntent();  
         File file = getFile(gIntent.getData());  
   
 //将中文路径编码进行转化(File)。  
     public  File getFile(Uri uri) {  
         if (uri != null) {  
             String filepath = uri.getPath();  
             if (filepath != null) {  
                 return new File(filepath);    //转化  
             }  
         }  
        return null;  
    }  
      
    //将中文路径编码进行转化(Uri)。  
    public static Uri getUri(File file) {  
        if (file != null) {  
            return Uri.fromFile(file);  
        }  
        return null;  
    }

MTK SmartPhone Record-(1)相关推荐

  1. MTK 驱动开发(35)---待机功耗分析流程

    1.目的 2.MTK平台各个场景功耗数据测试方法 很多功耗问题都是因为测试手法不对,列出一些常用场景功耗测试手法.  测试功耗数据之前,请先确认以下配置:  1.关闭 WIFI/BT/GPS,关闭数据 ...

  2. MTK 驱动开发(22)---camera 硬件和软件概述

    1.Camera 硬件介绍 1,Image Sensor类型 a)     YUV Sensor YUV Sensor输出的Data格式为YUV,图像的效果处理使用Sensor内部的ISP,BB端接收 ...

  3. MTK 驱动开发(30)---Memory 移植

    一.MTK 平台和高通平台在器件选型时都要求选择已经验证过的器件,第一步需要QVL验证 1) 根据硬件原理图和EMMC 和DDR厂家的芯片资料, 确定EMMC 和DDR  64+4,型号如下: EMM ...

  4. MTK 驱动开发(16)---LCM 移植

    对于LCM驱动移植,一般分为三部曲: 1.硬件IO口配置: 2.确保LCM背光能够正常点亮: 3.LCM驱动移植: 硬件电路: 1.GPIO配置 打开 mediatek\dct\DrvGen.exe ...

  5. MTK 驱动开发(5)---bootloader

    1.框架 MTK 平台的启动过程经过四个模块,分别是BootRom,Preloader,LK,Kernel. 2 .bootloader到kernel启动总逻辑流程图 3.Boot ROM Boot ...

  6. MTK 驱动开发(40 )---TP乱跳频原因

    触摸屏(TP)乱跳原因总结 导致触摸屏乱跳的原因大概分为5类: (1) 触摸屏硬件通道损坏   (2)触摸屏固件版本太低 (3) 触摸屏工作电压异常   (4) 射频干扰   (5)触摸屏校准异常 硬 ...

  7. MTK 驱动开发(37)--如何确定阻止进入suspend的原因

    1.系统无法进入suspend 系统没有进入suspend,主要的原因是因为系统有锁导致. 锁一般分为:APP透过PowerManager拿锁,以及kernel wakelock. 分析上层持锁的问题 ...

  8. MTK 驱动开发(39)--低功耗分析工具

    1.功耗问题抓日志 功耗问题抓log请遵循几条原则: ------------------------------------------------------------------------- ...

  9. MTK 驱动开发(36)---低功耗基础知识

    1.sleep /suspend suspend确切的说是MCU(ARM )的suspend,也就是cpu进入Wait for interrupt状态(WFI):因为对整个系统来说,CPU进WFI是整 ...

  10. MTK 驱动开发(18)---LCD 参数理解

    转载自http://blog.csdn.net/longxiaowu/article/details/24319933 Linux内核的amba lcd控制器使用clcd_panel结构体表示一个LC ...

最新文章

  1. oracle 年龄计算 岁 月 天
  2. 微信一键关注 php,微信公众平台开发一键关注微信公众平台账号
  3. 公司的实战Replica Sets+Sharding方案
  4. 世界第一台电脑_再述东芝的传奇霸业:当年造出世界上首台笔记本,现在却为何放弃...
  5. 51nod 1562 玻璃切割 (STL map+一点点的思考)
  6. leetcode - 96. 不同的二叉搜索树
  7. 易语言客户端请求http_易语言建立HTTP连接请求源码
  8. linux内核模块签名,linux内核模块签名
  9. POJ 3348 Cows
  10. paddlepaddle的使用
  11. 百度移动搜索主要有如下几类结果构成
  12. idean中jsp页面乱码_IntelliJ IDEA 控制台 乱码 有效解决办法
  13. 几种常用的JSON解析工具的使用
  14. speedoffice(Word)文字怎么添加下划线
  15. 吞剑!喷火!这种江湖卖艺套路能吸引观众吗?
  16. 生成SQLite的db文件
  17. 【c#】文本转语音,语音转文本
  18. Python—标准遗传算法求函数最大值代码实现
  19. Cytoscape Web 实现网络拓扑结构图
  20. PCI设备初始化(一)

热门文章

  1. 云仓是什么?如何选择优质云仓?
  2. Java面向对象的三大特征:封装、继承和多态
  3. C++ 圣诞节小游戏
  4. win10锁屏或睡眠一段时间后弹不出登录框
  5. 笔记:PicoScope 3405D采集卡简单使用
  6. 不同设备如何统一语言编程平台高效开发?本文为你揭秘
  7. 阿里P8架构师“墙裂”推荐,JVM性能调优看这篇就够了
  8. 学成在线 第9天 讲义-课程预览 Eureka Feign 六
  9. springboot 基于Vue汉服文化宣传交流网站java源码
  10. 我在传智播客上课的感受