android(MTK)开发中一些问题小结

本文介绍Android系统的各项定制方法,包括修改CPU频率、调整屏幕方向、隐藏状态栏等,还涉及蓝牙配置、SIM卡通知及权限设置等内容。

1.背光亮度默认
frameworks\base\packages\SettingsProvider\res\values\defaults.xml

2.解决同批手机软件蓝牙地址一致的问题
在Radiomod.c (source\external\bluetooth\driver)  中    
将int GetRandomValue(unsigned char string[6])的随机数生成打开。

3.低电量提示
frameworks/base/packages/SettingsProvider/resalues/config.xml

4.修改cpu 最大最小频率
   cpufreq.c
路径:kernel\drivers\cpufreq
修改方法:
去掉
//show_one(cpuinfo_min_freq, cpuinfo.min_freq);
//show_one(cpuinfo_max_freq, cpuinfo.max_freq);
加入
show_cpuinfo_max_freq(struct cpufreq_policy *policy, char *buf)
{
 unsigned int  cpumaxfeq = 1400000;
 return sprintf(buf, "%u\n", cpumaxfeq); 
}

 

show_cpuinfo_min_freq(struct cpufreq_policy *policy, char *buf)
{
 unsigned int  cpuminfeq = 200000;
 return sprintf(buf, "%u\n", cpuminfeq); 
}

5.默认USER版本修改USB开启
方法一:
/build/core/main.mk
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1
方法二:
修改DefaultActivity.java
在onCreate里面加入下面这句话即可在user模式默认开启usb调试
Settings.Secure.putInt(getContentResolver(),Settings.Secure.ADB_ENABLED, 1);

6.build/target/product/core.mk
                           /common.mk
加入APK

7.
 语言代码:ISO 639
 国家代码:ISO 3166-1
Android Language Support FAQ.pptx

Android Language Introduction.docx

做多国语言时很需要

 

8.简单的编译./mk -o=TARGET_BUILD_VARIANT=user project_xxx new


9.android:screenOrientation=”portrait”则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。android:screenOrientation=”landscape”,为横屏显示。

10.Android隐藏状态栏和标题栏,相当于全屏效果
 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

11.
android:allowClearUserData
是否给以用户删除用户数据的权限,如果为true应用管理者就拥有清除数据的权限;false没有。默认为true。
12.关掉屏幕下方的导航栏temporary enables NAV bar (soft keys)
去掉qemu.hw.mainkeys=0的定义

13.

project_xxx/build/tools/buildinfo.sh
  修改信息版本

14.修改CPU信息 双核 cpu_dev_init()

显示CPU 6517 或6577
c_show()

 

24.
FrameLayout.LayoutParams
Intent.FLAG_ACTIVITY_CLEAR_TOP
25.
VISIBLE:0  意思是可见的
INVISIBILITY:4 意思是不可见的,但还占着原来的空间
GONE:8  意思是不可见的,不占用原来的布局空间
26.
intent.setFlags方法中的参数值含义 .
1.FLAG_ACTIVITY_CLEAR_TOP:例如现在的栈情况为:A B C D 。D此时通过intent跳转到B,如果这个intent添加FLAG_ACTIVITY_CLEAR_TOP标记,则栈情况变为:A B。如果没有添加这个标记,则栈情况将会变成:A B C D B。也就是说,如果添加了FLAG_ACTIVITY_CLEAR_TOP标记,并且目标Activity在栈中已经存在,则将会把位于该目标activity之上的activity从栈中弹出销毁。这跟上面把B的Launch mode设置成singleTask类似。简而言之,跳转到的activity若已在栈中存在,则将其上的activity都销掉。
2.FLAG_ACTIVITY_NEW_TASK:例如现在栈1的情况是:A B C。C通过intent跳转到D,并且这个intent添加了FLAG_ACTIVITY_NEW_TASK标记,如果D这个Activity在Manifest.xml中的声明中添加了Task affinity,系统首先会查找有没有和D的Task affinity相同的task栈存在,如果有存在,将D压入那个栈,如果不存在则会新建一个D的affinity的栈将其压入。如果D的Task affinity默认没有设置,则会把其压入栈1,变成:A B C D,这样就和不加FLAG_ACTIVITY_NEW_TASK标记效果是一样的了。注意如果试图从非activity的非正常途径启动一个activity(例见下文“intent.setFlags()方法中参数的用例”),比如从一个service中启动一个activity,则intent比如要添加FLAG_ACTIVITY_NEW_TASK标记(编者按:activity要存在于activity的栈中,而非activity的途径启动activity时必然不存在一个activity的栈,所以要新起一个栈装入启动的activity)。简而言之,跳转到的activity根据情况,可能压在一个新建的栈中。

3.FLAG_ACTIVITY_NO_HISTORY:例如现在栈情况为:A B C。C通过intent跳转到D,这个intent添加FLAG_ACTIVITY_NO_HISTORY标志,则此时界面显示D的内容,但是它并不会压入栈中。如果按返回键,返回到C,栈的情况还是:A B C。如果此时D中又跳转到E,栈的情况变为:A B C E,此时按返回键会回到C,因为D根本就没有被压入栈中。简而言之,跳转到的activity不压在栈中。

4.FLAG_ACTIVITY_SINGLE_TOP:和Activity的Launch mode的singleTop类似。如果某个intent添加了这个标志,并且这个intent的目标activity就是栈顶的activity,那么将不会新建一个实例压入栈中。简而言之,目标activity已在栈顶则跳转过去,不在栈顶则在栈顶新建activity。

27.android:screenOrientation=”portrait”则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。android:screenOrientation=”landscape”,为横屏显示。
28.Android隐藏状态栏和标题栏,相当于全屏效果
 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
29.
1、android:allowClearUserData
是否给以用户删除用户数据的权限,如果为true应用管理者就拥有清除数据的权限;false没有。默认为true。
30.temporary enables NAV bar (soft keys)
去掉qemu.hw.mainkeys=0的定义
30.alps/packages/inputmethods/LatinIME/java/res/xml/method.xml
中打开相应的输入法subtype就可以支持
换开关机logo
31.mediatek/custom/common/lk/logo
                        uboot/logo
32./media/pecke/alps/mediatek/frameworks-ext/base/core/jni/android_bluetooth_common.h
  #define BTMTK_ANDROID_DEFAULT_LOCAL_NAME "ANDROID BT"
/media/pecke/S017_800_480/alps/mediatek/config/common/custom.conf
蓝牙名称修改
33.72默认墙纸修改:
frameworks/base/core/res/res/
alps/mediatek/custom/out/sanstar72_wet_lca/resource_overlay/LCA_rom/packages/apps/Launcher2/res/drawable-nodpi
/alps/mediatek/custom/common/resource_overlay/LCA_rom/packages/apps/Launcher2/res/drawable-nodpi
34.logo_1编译出来后
/media/pecke/S017_800_480/alps/mediatek/external/boot_logo_updater/custom/boot_logo
35.距离感应:/media/pecke/S017_800_480/alps/frameworks/base/services/java/com/android/server/power
36./media/pecke/S017_800_480/alps/cts/tests/tests/os/src/android/os/cts/
/media/pecke/S017_800_480/alps/frameworks/base/core/java/android/os/PowerManager.java
37.sim Toolkit
/media/pecke/S017_800_480/alps/mediatek/packages/apps/StkSelection
自定义JAVA宏
38.alps/mediatek/build/tools/javaoption.pm
39.psensor感应的文件
alps/frameworks/base/services/java/com/android/server/power/DisplayPowerController.java
alps/frameworks/base/services/java/com/android/server/power/PowerManagerService.java
40.修改键值

/alps/mediatek/custom/sanstar72_wet_lca/kernel/touchpanel/GT9XX/tpd_custom_gt9xx.h
GTP_KEY_TAB
41./mediatek/binary/3rd-party/free/Baidu_Map/baidu_map.apk

42.检测T卡
     private void update() {  
2.    File path = Environment.getExternalStorageDirectory();  
3.    StatFs stat = new StatFs(path.getPath());  
4.    long blockSize = stat.getBlockSize();  
5.    long totalBlocks = stat.getBlockCount();  
6.    long availableBlocks = stat.getAvailableBlocks();  
7.    mTotalSize.setText(formatSize(totalBlocks * blockSize));  
8.    mUsedSize.setText(formatSize((totalBlocks - availableBlocks) * blockSize));  
9.    mAvailableSize.setText(formatSize(availableBlocks * blockSize));  
10. 

43.开机铃声bootaudio 关机铃声shutaudio.mp3

44./alps_user_854_480/frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/UiccController.java
修改SIM卡通知

45.设置权限文件 system\core\rootdir\ueventd.rc

46.修改MTK蓝牙状态
frameworks/base/services/java/com/android/server/SystemServer.java
   int bluetoothState = Settings.Global.getInt(mContentResolver,
                            Settings.Global.BLUETOOTH_ON, 0);/*BLUETOOTH_STATE*/
                    Slog.i(TAG, "bluetoothState = " + bluetoothState);
                    if (bluetoothState != 0) {
                        bluetooth.enable();
                    }
47.第一次开机后检测camera失败, camera icon会一直不会显示,即使重开机后 camera检...
http://www.16rd.com/forum.php?mod=viewthread&tid=13201&fromuid=4

48.frameworks\base\core\java\android\widget\TextView.java  setText()在 3192行左右:修改字串显示

49.apt-get install nautilus-open-terminal#这就终端就在右键菜单了可以了!!

50.修改 layout-land 和 layout-port 下的 application_boxed.xml 文件
<com.fede.launcher.AppView android:textSize="13.0dip"
  
13.0dip 就是文字大小,
其中桌面上图标文字的大小在 values/styles.xml 中修改,字段是    <style name="WorkspaceIcon">
        <item name="android:textSize">16.0dip</item>   中的16

50.r不识别 SIM卡问题 删除out/target/product/$project/obj/include/dfo

51. apt-get install nautilus-open-terminal

52.vim /etc/fstab 挂硬盘

53.PSense
DisplayPowerController.java
updatePowerState

54.

Settings.java (alps\packages\apps\settings\src\com\android\settings)

final boolean showDev =  true; //修改为一直显示开发者选项.

<think>首先,用户的问题是关于下载与MTK调屏相关的代码。用户提到“mtk调屏代码下载”,结合之前的对话历史,用户似乎是MTK平台的开发者,需要下载与屏幕调试相关的驱动代码。 回顾对话历史: - 用户之前询问了MTK调屏的方法和技术概述,我提供了详细的回答。 - 现在用户参考了几个引用: - 引用[1]: 触摸屏驱动程序的学习基础,提到MTK和高通平台的驱动开发实践。 - 引用[2]: MTK6739安卓12屏幕调试笔记,警告了AAL许可证问题。 - 引用[3]: kernel-4.9中触摸屏驱动的入口函数。 - 引用[4]: MTK平台调试mipi屏问题小结,描述了调试流程。 - 用户说:“我想下载与mtk调屏相关的代码 请问mtk调屏代码下载” 用户的需求是下载MTK调屏代码。MTK代码通常是专有的,需要从MTK官方渠道获取,如通过合作伙伴或授权账户下载。作为开发者,用户可能已经有了MTK开发套件或账号。 我的回答需要: - 结构清晰,步骤分明。 - 真实可靠:基于常识,MTK代码不是公开可下载的;通常需要从MTK开发者门户或通过OEM渠道获取。 - 引用参考文献:用户提供的引用中,[1][2][3][4]涉及MTK驱动开发,我可以自然地融入引用。 - 使用中文回答。 - 生成相关问题。 - 遵循LaTeX格式规则:在数学表达式中严格使用$...$和$$...$$。 回答结构: 1. **解释代码获取方式**:说明MTK调屏代码(如LCD驱动、触摸屏驱动)通常通过MTK开发套件或源代码包分发。 2. **提供获取步骤**:建议用户使用MTK开发者平台,如MTK SourceForge或授权渠道。 3. **参考引用**:融入用户提供的引用,例如提到调试笔记或驱动框架。 4. **注意事项**:警告可能的许可证问题,如引用[2]提到的AAL许可证。 5. **生成相关问题**:在末尾添加相关问题。 关键点: - MTK代码是闭源的,需要授权。 - 用户可能已经有开发环境;引导他们到特定目录或命令。 - 基于引用[4],提到从datasheet开始,但下载代码是另一个层面。 可能的获取方式: - 从MTK的Release文档或SDK包中下载驱动代码。 - 在MTK开源部分,如Mediatek开源社区,但核心驱动可能不公开。 - 强调需要开发账号。 回答大纲: - 介绍MTK调屏代码在哪里。 - 步骤: 1. 访问MTK开发者门户或使用提供的SDK。 2. 查找相关驱动文件,如屏幕驱动在kernel/drivers/input/touchscreen/mediatek/。 3. 编译和下载。 - 引用文献:自然融入。 - 最后,相关问题。 相关问题生成: 基于用户问题,生成与MTK屏幕驱动下载或开发相关的后续问题。 例如: 1. 如何申请MTK开发账号获取代码? 2. MTK屏幕驱动编译有哪些常见错误? 3. 如何移植自定义屏幕驱动到MTK平台? 确保回答真实:我不能提供实际下载链接,但指导用户如何合法获取。 </think>### MTK调屏代码下载指南 在MTK平台上,屏幕调试代码(如LCD驱动、触摸屏驱动等)通常是MTK专有驱动的一部分,需要从官方渠道获取。这些代码并非公开可随意下载,而是集成在MTK的SDK(软件开发套件)中,仅限授权开发者或合作伙伴访问。以下我将基于您的需求,一步步解释如何合法下载和访问这些代码,并结合站内引用确保回答可靠[^1][^2][^3][^4]。 #### 1. **代码获取方式概述** - MTK调屏代码主要包括屏幕初始化、数据传输、源管理等模块,通常位于Linux内核的驱动目录中(如`kernel/drivers/input/touchscreen/mediatek/`)。代码下载需要通过MTK官方开发者门户(如MTK SourceForge或客户支持平台)获取完整SDK包[^1]。 - **关键途径**: - **授权账户下载**:如果您是MTK的注册合作伙伴或OEM开发者,可以使用MTK开发者账号登录[MTK Online](https://online.mediatek.com)下载源代码包(例如Release版本如MT6765/MT6739 SDK)。 - **开源部分访问**:部分驱动代码(如基本框架)可在开源的[Mediatek GitHub仓库](https://github.com/mediatek)或[AOSP(Android Open Source Project)](https://source.android.com)中找到,但核心调屏驱动(如专有算法)通常不开放。 - **注意事项**:MTK代码受许可证限制,下载前需确保您有合法授权。否则,可能遇到类似引用[2]中的问题:AAL(Adaptive Ambient Light)许可证缺失导致屏幕无法点亮[^2]。 #### 2. **具体下载步骤** - 假设您已有开发环境(如Android源码树),以下是典型步骤: - **步骤1: 访问MTK开发者平台** - 登录MTK官方开发者门户(需注册账号),搜索您的芯片型号(如MT6739)。 - 在下载区选择对应的Android版本SDK(例如Android 12),下载完整源码包(通常为`.tar.gz`或`.zip`文件)。 - 参考引用[4],下载前应准备好屏幕datasheet和初始化代码,确保兼容性[^4]。 - **步骤2: 定位调屏代码** - 解压SDK后,进入内核驱动目录: ```bash cd kernel-4.9/drivers/input/touchscreen/mediatek/ # 类似引用[3]中的路径[^3] ``` - 此处文件如`mtk_tpd.c`(触摸屏驱动)或`lcm_drv.c`(LCD驱动)包含关键调屏逻辑。 - 对于屏幕初始化代码,查看`lcm_list.c`或设备树文件(`dts`),这些定义了时序参数如$H_{Sync}$(水平同步信号)。 - **步骤3: 编译和验证** - 使用MTK编译工具链(如`build.sh`)构建驱动。 - 烧录到设备后,通过UART日志检查初始化状态(参考引用[4]中压检测步骤)[^4]。 - **替代方法**:若无官方账号,可尝试开源资源: - 下载AOSP源码(`repo init -u https://android.googlesource.com/platform/manifest -b android-12.0.0_rXX`),然后在`device/mediatek/`目录查找部分驱动。 - 社区资源如XDA Developers论坛可能有共享的驱动片段(但需注意版权风险)。 #### 3. **注意事项与常见问题** - **许可证问题**:如引用[2]警告,MTK新版本(Android 11+)默认启用AAL功能。如果SDK包缺少许可证密钥,会导致屏幕调试失败(日志显示`AAL is not working: no license key`)。解决方法:确保下载的SDK包含完整许可证或联系MTK支持添加密钥[^2]。 - **代码完整性**:MTK驱动代码高度依赖硬件规格。下载后,需根据屏幕datasheet修改参数,例如引用[4]提到的DVDD压调整(公式:$V_{DD} \approx 3.3V$)[^4]。 - **调试辅助**:结合MTK工具如DSI Analyzer或LK日志,验证代码是否正常加载[^1]。如果遇到初始化错误(如屏幕无显示),检查驱动入口函数(如引用[3]中的`late_initcall(tpd_device_init)`)是否正确定义[^3]。 #### 4. **推荐资源** - **官方渠道**: - [MTK开发者门户](https://online.mediatek.com):主下载中心,需账号。 - [Mediatek GitHub](https://github.com/mediatek):开源驱动参考。 - **文档参考**:MTK SDK自带的《Display Driver Development Guide》,覆盖初始化、功耗优化等细节[^1]。 ### 总结 下载MTK调屏代码需要通过合法授权渠道获取完整SDK包,重点关注内核驱动目录(如`mediatek/touchscreen/`)。优先使用官方开发者账号下载,避免许可证问题。调试时,结合日志和工具验证代码功能性[^1][^4]。如果您是个人开发者,建议从合作伙伴或OEM厂商处获取访问权限。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值