RK3229平台Android6.0系统的一些定制性需求开发
1.默认语音、地区、时区
device/rockchip/rk322x/rk322x_box/system.prop
persist.sys.language=zh #简体中文
persist.sys.country=CN #中国
persist.sys.timezone=Asia/Shanghai #GMT+8
2.版本号:
build/core/Makefile
# A human-readable string that descibes this build in detail.
# build_desc := $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT) $(PLATFORM_VERSION) $(BUILD_ID) $(BUILD_NUMBER) $(BUILD_VERSION_TAGS)
build_desc := V1.0.0 #可以直接去掉上面一大串引用,也可以在上面的基础上修改
3.默认输入法:
1)frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java
// At the initial boot, the settings for input methods are not set,// so we need to enable IME in that case.public void enableAllIMEsIfThereIsNoEnabledIME() {if (!TextUtils.isEmpty(getEnabledInputMethodsStr())) {//增加一个取反!StringBuilder sb = new StringBuilder();final int N = mMethodList.size();for (int i = 0; i < N; i++) {InputMethodInfo imi = mMethodList.get(i);Slog.i(TAG, "Adding: " + imi.getId());if (i > 0) sb.append(':');sb.append(imi.getId());}putEnabledInputMethodsStr(sb.toString());}}
2)frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<!-- Add by haming: add baidu input method --><string name="def_input_method" translatable="false">com.baidu.input_baidutv/.ImeService</string>
3)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.def_input_method ); //add by haming for baidu input method} finally {if (stmt != null) stmt.close();}
}
4.设备信息:
build/tools/buildinfo.sh
echo "ro.product.model=XXX"
echo "ro.product.brand=AiSing"
echo "ro.product.name=XXX"
echo "ro.product.device=ASBox"
echo "ro.product.board=Box"
echo "ro.product.manufacturer=company name"
5.分区大小修改:
如以下将boot分区增大了0x00004000,从原来的0x00006000变更到0x00010000, 其中@前面的十六进制数值表示分区的大小,单位:Kbit,@后面的十六进制数值表示分区的起始地址。
device/rockchip/rk322x/parameter.txt
CMDLINE:console=ttyFIQ0 androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00004000@0x00004000(trust),0x00002000@0x00008000(misc),0x00000800@0x0000A000(baseparamer),0x00007800@0x0000A800(resource),0x00006000@0x00012000(kernel),0x00010000@0x00018000(boot),0x00010000@0x00028000(recovery),0x00020000@0x00038000(backup),0x00040000@0x00058000(cache),0x00008000@0x00098000(metadata),0x00002000@0x00A0000(kpanic),0x00400000@0x000A2000(system),-@0x004A2000(userdata)
6.静态logo&开机视频:
1)静态logo修改
直接替换以下两个bmp文件
kernel/logo.bmp kernel/logo_kernel.bmp
2)添加开机视频
函数声明:frameworks/base/cmds/bootanimation/BootAnimation.h
class BootAnimation : public Thread, public IBinder::DeathRecipient
{
public:…… //此处省略好多行void playMusic();bool playVideo(); //在这里声明一个播放视频的函数…… //此处省略好多行
}
函数实现及使用:frameworks/base/cmds/bootanimation/BootAnimation.cpp
namespace android {
……//此处省略好多行
#define USER_BOOTVIDEO_FILE "/data/local/boot.mp4"
#define SYSTEM_BOOTVIDEO_FILE "system/media/boot.mp4"
……//此处省略好多行
bool BootAnimation::threadLoop()
{bool r;……//此处省略好多行if (mZip == NULL) {//若bootanimation.zip文件是空文件,则播放android原生开机动画r = android();} else if ((0 == access(USER_BOOTVIDEO_FILE, F_OK)) || (0 == access(SYSTEM_BOOTVIDEO_FILE, F_OK))) { //系统指定路径存在视频文件则播放开机视频r = playVideo();} else { //否则播放开机帧动画r = movie();}……//此处省略好多行return r;
}bool BootAnimation::playVideo() //播放开机视频函数实体
{ALOGD("playVideo");const float MAX_FPS = 60.0f;const float CHECK_DELAY = ns2us(s2ns(1) / MAX_FPS);eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);eglDestroySurface(mDisplay, mSurface);sp<MediaPlayer> mp = new MediaPlayer();//mp->reset();if((0 == access(USER_BOOTVIDEO_FILE, F_OK)) && mp != NULL){mp->setDataSource(NULL, USER_BOOTVIDEO_FILE, NULL);}else if((0 == access(SYSTEM_BOOTVIDEO_FILE, F_OK)) && mp != NULL){mp->setDataSource(NULL, SYSTEM_BOOTVIDEO_FILE, NULL);}mp->setLooping(false);mp->setVideoSurfaceTexture(mFlingerSurface->getIGraphicBufferProducer());mp->prepare();mp->start();// when boot complete, then exit animation
#if 1while(true) {if(exitPending())break;usleep(CHECK_DELAY);checkExit();}
#endifmp->stop();return false;
}
…...//此处省略好多行
};
开机视频文件拷贝:
首先将文件拷贝到以下目录
vendor/rockchip/common/apps/CopyCustomFile/boot.mp4
然后添加编译脚本
vendor/rockchip/common/apps/CopyCustomFile/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_POST_PROCESS_COMMAND :=$(shell mkdir -p $(TARGET_OUT)/media/)LOCAL_POST_PROCESS_COMMAND :=$(shell cp -r $(LOCAL_PATH)/boot.mp4 $(TARGET_OUT)/media/)
include $(call all-makefiles-under,$(LOCAL_PATH))
RK3229平台Android6.0系统的一些定制性需求开发相关推荐
- RK3229平台Android6.0系统添加广升OTA升级功能
添加脚本: build/core/FotaInfo.sh #!/bin/bash#********Do not modify this file. If you want modify this fi ...
- 零死角玩转Android6.0系统Healthd深入分析
零死角玩转Android6.0系统Healthd深入分析 概述 Healthd是android4.4之后提出来的一种中介模型,该模型向下监听来自底层的电池事件,向上传递电池数据信息给Framework ...
- 在Eclipse中导入编译MTK平台Android6.0源码的原生Gallery2应用
源码下载地址 由于工作的需要,需要在Eclipse中调试MTK平台Android6.0的原生Gallery2应用, 网上已经有很多类似的技术文章了,步骤都差不多, 但是MTK在google原生的Gal ...
- 461在全志r16平台tinav3.0系统下使用地磁计QMC5883L
461在全志r16平台tinav3.0系统下使用地磁计QMC5883L 2018/9/7 14:08 版本:V1.0 开发板:SC3817R SDK:tina v3.0 (基本确认全志tina v3. ...
- Android6.0 ios,意超越iOS9!谷歌寄希望于Android6.0系统
虽然在目前全球的移动操作系统上,谷歌的Android系统市场占有率傲视群雄,但在某些方面iOS系统还是更占优势.对此分析师Dan Gallagher认为谷歌和苹果.Android和iOS之间的战况将随 ...
- 双路E5平台PVE7.0系统GTX1060 显卡直通
双路E5平台PVE7.0系统GTX1060 显卡直通 刚通,熟悉的错误消失了,有点失落,有点不知所措.直通成功了,开机能跑好几套系统(win10系统还能直通显卡玩游戏). 使用鲁大师对比物理机和虚机的 ...
- android+桌面歌词,Android6.0系统适配桌面歌词效果
在360手机助手及各家的音乐播放器软件上,都使用了桌面浮动窗功能,桌面歌词都是在音乐客户端显示在前台时隐藏,在用户把软件切换到后台后显示出来,此效果在Android 6.0以前,大部分都是使用系统的A ...
- android6.0 系统时间不自动校准的问题
软件平台:android6.0 硬件平台:MT6797 最近,发现我们产品中有一定概率的时间是不对的,我感到很诧异,我司的产品怎么可以这莫弱鸡,而且android本身的智能性,区区一个时间怎么可能也不 ...
- iTOP-i.MX6Q开发板支持安卓Android6.0系统
迅为IMX6开发板: Android4.4/6.0系统 Linux + Qt5.7系统 Ubuntu12.04系统 部分案例:HMI:3D打印机:医疗设备:工控机:触控一体机:车载终端 核心板兼容 ...
最新文章
- 互联网思维-标签思维(2)
- WPF的ProgressBar进度条
- Developer Express控件组合中的GridControl控件,如何自动显示每一行的序号
- 还在对Matplotlib繁琐的图层设置感到烦恼!?快来看看这个Python绘图工具包吧
- C++中的wchar_t(转)
- PHP处理图片导致内存溢出
- MySQL 传统复制与 GTID 复制原理及操作详解
- 学习linux装,一个初学者的Linux学习之旅之Linux安装篇
- VisualStudio2019 DLL生成并使用教程(C++)最详细Demo教程
- [置顶] SPL讲解(6)--Condition篇
- 容易被忽略的注解,你能了解多少?
- ijkplayer-旋转角度实现
- 响应式Web设计:HTML5和CSS3实战 笔记
- 【报告分享】2021年中国商业物联网行业研究报告-艾瑞咨询(附下载)
- SHFileOperation
- C++ 相关职位的要求
- Python-集合练习(协助学生做问卷调查)
- 高电平输入好还是rca输入好_汽车音响接高电平还是低电平是什么意思
- python红楼梦作者_用 Python 分析《红楼梦》,后四十回是曹雪芹所写吗?(开源)...
- 用程序来模拟Alt+PrtSc的键盘事件,实现截屏功能
热门文章
- (烧脑)奇怪数 - C语言 - 回溯
- 350个运动摄影lr调色预设(含lr预设导入教程)
- 区块链能保护隐私?别被忽悠了
- 2.PMAC硬件-一个运动控制系统的实例
- 韦东山老师的单片机核心课程学习笔记(三)
- 计算机二级有重复的题目吗,计算机二级能重复考吗
- 基于Springboot的幼儿园管理系统
- java计算机毕业设计基于安卓Android的城市公交查询app
- Win10下安装RabbitMQ[教程和安装包]
- 今日发现导出dbf类型为dBASE IV的文件,数据列不能超过40个,否则报错“字段将不能置于记录中”