Engineer-Bruce_Yang
本科毕业于华南理工大学,美国Carroll University工商管理硕士,曾就职于世界名企伟易达,安防军工砺剑防卫公司,多年嵌入式产品开发经验,在智能玩具、安防产品、平板电脑、手机开发有丰富的实战开发经验。
展开
-
Android OTA相关博文
OTA升级介绍http://blog.youkuaiyun.com/u013947002/article/details/49024637http://blog.chinaunix.net/uid-29728680-id-5253651.html[FAQ15046]L版本Recovery Mode打开adb功能 http://blog.chinaunix.net/uid-29728680-id-5252653转载 2017-04-01 23:20:08 · 1217 阅读 · 0 评论 -
手把手教你深度定制tiny4412安卓5.0系统(一)---开发板如何预置文件到android系统
想要预置文件,首先要了解Android源码中device这个目,打开这个目录我们看到,这个目录厂家会针对不同的开发板做一些修改:在这个目录中,我们看到有不同的厂家定制的信息,我们这款开发板是友善之壁提供的,那么我们只要进入friend-arm这个目录下就可以了,进到这个目录,看到tiny4412,我们切换进入看到:要预置相关的文件,前面有一篇文章专门讲过怎么预置,一般是在device.mk中进行,原创 2017-04-22 17:17:42 · 4510 阅读 · 0 评论 -
手把手教你写Linux设备驱动---input子系统(三)--电容屏事件坐标读取(基于友善之臂4412开发板)
前面我们学习了鼠标是如何如何通过应用程序来读取事件和坐标值的,后面也写了一个简单的input系统的按键驱动程序。博文如下,讲的内容非常清楚,给小白来入手当然是非常容易的:http://blog.youkuaiyun.com/morixinguan/article/details/69808832这节,我们来学习一下触摸屏事件获取,然后上一个基于4412开发板ft5x0x型号的x,y坐标值读取,后面我们将从零开原创 2017-04-17 23:53:25 · 3991 阅读 · 0 评论 -
Tiny4412上如何解决间断熄屏
最近在模仿RK在Tiny4412上写一个PCBA产测工具的程序,经常出现熄屏的现象,让我头痛不已,因为产测程序在生产测试的时候是不能失去界面显示的,所以,参考以下两篇文章,结合对应的内核代码,解决了问题,感谢两位大神的帮助:http://www.360doc.com/content/14/0611/16/7500195_385729149.shtmlhttp://blog.youkuaiyun.com/liu原创 2017-05-14 17:00:55 · 1072 阅读 · 0 评论 -
Android 5.X与Android4.X版本机器人动画的区别以及制作动画的方法
今天翻了下墙,解决了一直以来的疑惑问题:为什么Android5.0以及6.0的recovery版本,机器人动画怎么就只有一张图片?这个问题,我百思不得其解,看了很多网文,也只是有了个概念。请参考以下文档,这是我从谷歌Android开源网拉下来的原文:https://source.android.com/devices/tech/ota/device_codeRecovery UI imagesAn原创 2017-04-22 14:46:48 · 2096 阅读 · 0 评论 -
Android下音频的测试程序tinyalsa(录音,放音,查看声卡信息)
audio代码比较复杂,除了音频参数,我们平时客制化的地方不多。所以没有太深入了解。建议先抽空看看如下代码:kernel, linux alsa 架构:kernel-3.10/sound/soc/mediatek/kernel-3.10/Documentation/sound/alsa/soc/android 上层alsa接口external/tinyalsa/hal:vendor/mediate转载 2017-05-21 15:35:48 · 6606 阅读 · 0 评论 -
Android WiFi--系统架构
1. 系统架构 Android WiFi系统引入了wpa_supplicant,它的整个WiFi系统以wpa_supplicant为核心来定义上层用户接口和下层驱动接口。整个WiFi系统架构如下图所示: 一切尽在上图中,下面将对每部分进行详细分析。1.1 WifiService 由SystemServer启动的时候生成的ConnecttivityService创建,转载 2017-05-21 15:56:16 · 2168 阅读 · 0 评论 -
Window,Linux应用程序调试法----写文件调试程序法
Linux,一切皆文件,那么在Android系统本身,也是Linux+java罢了,也是在Linux的运行环境下。通常,我们在调试程序的都会使用printf。在Android中,我们会去使用logcat,现在,给大家介绍一种常用的调试方法,debug写文件调试法。在Android系统中,调试一个C应用程序可谓是极其不方便,为了保存log的完整性,于是,写文件调试法可以发挥重大的作用,下面给出一个例原创 2017-06-06 15:56:16 · 734 阅读 · 0 评论 -
Tiny4412 Android5.0 定制media codecs相关的格式(二)
http://blog.youkuaiyun.com/morixinguan/article/details/73149058上一节说到4412的在Android 5.0源代码中支持了许多的格式,那么这些格式最终又是怎么确定的呢?找到以下这个文件:android-5.0.2/frameworks/base/media/java\android/media/MediaFile.java/* * Copyrig原创 2017-06-18 00:35:36 · 1397 阅读 · 0 评论 -
使用ubuntu17.04编译Android 6.0源代码
在安装了最新的ubuntu17.04后编译Android6.0源代码的过程中,遇到了很多问题:1、openjdk无法支持jdk8,只能用回jdk72、还有很多未曾遇到的编译问题还陆陆续续遇到了各种各样的编译失败的信息,最后,参考这两位博主的16.04编译Android的方法顺利解决。http://blog.youkuaiyun.com/fuchaosz/article/details/51487585http原创 2017-04-16 01:03:24 · 2812 阅读 · 0 评论 -
recovery的一些开发点滴
Android的recovery是我在公司做的最多的,应该也是我在Android中了解的较为深入的一个部分。recovery这部分其实Android本身都已经提供了很完善的一套机制,但是因为公司是做机顶盒的,所以在因为平台订制的关系,recovery这部分还是做了很多修改的。 首先,修改的比较少的是OTT这种盒子,本次也主要讲这种,其实这种和手机区别不大。而类似将DVB 中的loader和Andr转载 2017-04-19 21:04:10 · 4292 阅读 · 7 评论 -
屏蔽Android PIE检测机制
最近做NDK开发相关的项目,总会时不时冒出下面这句打印信息:error: only position independent executables (PIE) are supported.后面一查,原来是Android版本新添加的保护机制,以前在RK3168 android4.1上没有看到这个东西。于是在Android源代码下找到:bionic/linker/linker.cpp搜索PIE:找到原创 2017-03-24 13:52:29 · 4775 阅读 · 0 评论 -
Android系统定制----删除系统锁屏功能
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +2519 \ if (SystemProperties.getBoolean("ro.lockscreen.disable.default", false) == true) 改为 if (System原创 2017-02-23 16:55:26 · 3958 阅读 · 0 评论 -
屏蔽开机的android_kernel_log信息---->lk.bin
最近在开机加一些自己的测试程序,编译的是eng版本,希望安卓开机后能够看到自己的调试信息,可是一开机就会有很多其它的信息干扰我的调试,那么如何屏蔽掉kernel的kmsg打印的这些信息呢?很简单,我们找到以下这个文件:在我的源码目录下:MT8127_M0_MP8_0407_BK\bootable\lk\app\mt_boot\mt_boot.c找到以下代码:#ifdef USER_BUILD原创 2016-12-26 15:56:13 · 1881 阅读 · 0 评论 -
Android去除按下HOME按键后上方的搜索框
找到布局文件:packages\apps\Launcher3\res\values\dimens.xml +74将48dp改为0dp 48dp找到相关触发代码:packages\apps\Launcher3\src\com\android\launcher3\allapps\DefaultAppSearchController.java +138注释这个方法 // showSearchF原创 2017-02-09 11:24:53 · 766 阅读 · 0 评论 -
如何去掉Android 6.0 UI界面上的搜索框
网上参考了许多博文,更改了不少都没有结果,搜索框就是去不了,后来在以下的这个java文件中找到这个按钮监听事件packages/apps/Launcher3/src/com/android/launcher3/Launcher.java找到这个方法:public View getOrCreateQsbBar() {.........//将这个方法以下的这行代码注释即可 mSearchDropTar原创 2017-02-08 13:58:56 · 4193 阅读 · 0 评论 -
Android编译注意事项
1、make bootimage 编译生成kernel.img和boot.img的整合会在out目录下生成以下文件。Target ram disk: out/target/product/em_t8350_emmc/ramdisk.imgTarget boot image: out/target/product/em_t8350_emmc/boot.img2、清除kernel的所有.o文件:rm原创 2017-01-12 09:56:43 · 961 阅读 · 0 评论 -
Android如何让system分区可读写(MTK安卓6.0)
Android 系统默认情况下,system 分区是只读 mount 的,因为无法进行往里写数据的,可以用 adb 命令 adb remount 重新 mount 一下。 也可以通过在板子上,输入以下命令重新mount一下system分区命令使其可读可写。 # mount -o remount /dev/block/mmcblk0p2 /system 不过上面的命令只是在当前的启动有原创 2016-12-07 15:10:00 · 15973 阅读 · 4 评论 -
Android如何预置apk,jar,lib等任意文件到系统中
ep :我手上有个libapp.so , fuse.bin , busybox,我需要将这三个文件在编译的时候自动拷贝到out目录下编译完成以后,.so文件会被预置到Andorid系统的根目录下的system/lib下,.bin文件会被预置到Andorid系统的根目录下的system/bin下。方法: 在Android sdk源代码目录下新建一个我自己的目录:myappcd mypp然后创建一个A原创 2017-04-14 11:43:55 · 3087 阅读 · 4 评论 -
手把手教你Tiny4412 Android5.0 定制 按下开发板上的按键通过广播发送到应用层
首先,处理按键按下后,可以通过发送广播让应用层识别按键事件,那么怎么来发送,可以找到下面这个文件:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java对应这个文件,我们找到这个方法,代码很多,部分shenglue/** {@inheritDoc} */ @Override原创 2017-06-18 01:06:55 · 4657 阅读 · 0 评论 -
Android系统shell中的clear命令实现
之前一直不太清楚,当我们在shell命令行输入很多命令,会在屏幕上输出一些信息,为什么一执行clear这个命令以后,所有的信息就没了呢?现在终于搞明白了,找到了clear命令的源代码clear.c源码如下:#include int clear_main(int argc, char **argv) { /* This prints the clear screen and move c原创 2017-06-19 15:23:17 · 1251 阅读 · 0 评论 -
Android系统shell中的df命令实现
当我们在shell中敲击df这条命令的时候,会看到:root@android:/ # dfFilesystem Size Used Free Blksize/dev 446.8M 36.0K 446.8M 4096/mnt/secure 446.8M 0.0 K 446.8M 4096原创 2017-06-19 16:08:59 · 2530 阅读 · 0 评论 -
MTK中NVRAM WARNING的含义
最近在和NVRAM打交道,所以务必要总结一下知识点,如有雷同,纯属巧合。以下的知识点参考MTK_on_line最新的文档总结。在做开发的时候,搜索网络AP经常会看到NVRAM WARING警告的信息,后面会有对应的数值。NVRAM WARNING的含义:(1)NVRAM WARNING = 0x00 表示NVRAM文档不存在(2)NVRAM WARNING = 0x02 表示NVRAM版本原创 2017-08-09 09:06:04 · 1458 阅读 · 0 评论 -
Android如何客制化adb shell进去后显示shell@xxxx的标识
首先,找到源代码,在external/mksh/mkshrc,打开这个文件后会看到开头有如下脚本:android4.2源码内容如下:: ${TERM:=vt100} ${HOME:=/data} ${MKSH:=/system/bin/sh} ${HOSTNAME:=android}: ${SHELL:=$MKSH} ${USER:=$(typeset x=$(id); x=${x#*\(};原创 2017-08-09 10:07:39 · 1707 阅读 · 0 评论 -
如何从MTK平台机器的NVRAM中获取WIFI mac地址
在MTK的机器中,如果不用特定的工具烧写MAC地址,在开机后打开WIFI后会显示: “NVRAM WARNING: Err=0x10”这就是没有烧写mac地址的原因,所以每次打开wifi,wifi的MAC地址都是一个随机产生的值,为什么会这样?答案在: vendor/mediatek/proprietary/packages/apps/CdsInfo/src/com/mediatek/connne原创 2017-08-07 16:27:41 · 7964 阅读 · 2 评论 -
关于加入NDK编译环境的方法以及如何加入PIE模块的编译选项
之前在编译一个公司的MTK平台的Android开机加密程序的时候死活编译不通过,后面发现,有一样东西没有设置:TOOLPREFIX = $(ANDROID_SRC_PATH)/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin/arm-linux-androideabi-这一项指的是用Android交叉编译工具链中的arm编译器。当设原创 2017-08-17 11:48:56 · 1724 阅读 · 1 评论 -
MTK平台Android Gsensor数据校准与数据获取
http://blog.youkuaiyun.com/morixinguan/article/details/76850600上节,写WIFI MAC地址的时候我们已经知道,MTKAndroid系统的Gsensor校准的数据其实也是存储在NVRAM中的,Gsensor隶属于传感器系统架构。 接下来我们来看下Gsensor校准的基准图像: 那么如何来校准Gsensor的X,Y,Z三个方向呢?我们可以参考MTK提原创 2017-08-10 20:42:38 · 7179 阅读 · 1 评论 -
MTK平台使用刷机软件刷机错误代码
https://jingyan.baidu.com/article/9c69d48f876a2913c9024efe.html转载 2017-08-18 17:16:41 · 1576 阅读 · 0 评论 -
MTK平台M非kk版本的OTA差分包的制作方法
制作OTA差分包可以参考以下博文:http://blog.youkuaiyun.com/wei_zhi/article/details/50489623同时也可以参考MTK的OTA更新相关的pdf文档。示例如下:ep: ./build/tools/releasetools/ota_from_target_files --block -s ./device/mediatek/build/releasetools原创 2017-08-24 17:25:24 · 1251 阅读 · 0 评论 -
基于Android Tiny4412平台---敦泰I2C接口FT5X06电容屏驱动原理及软件架构分析
关于I2C的原理可以参考以下博文:http://blog.youkuaiyun.com/morixinguan/article/details/78509764下面切入正题,我们从零开始认识电容屏的工作原理以及Android驱动的架构实现,下面是我写的一份PPT,如果想要原文档的话可以找我拿,或者到以下下载链接获取:http://download.youkuaiyun.com/download/morixinguan/1原创 2018-01-14 22:48:59 · 1495 阅读 · 0 评论 -
获取Android的MAC地址
在Android平台上,如果在开始启动前去加载一个测试程序,该测试程序的功能是去读取wifi的mac地址,然后显示出来,显示的方式可以使用移植recovery源代码的miniui。那么读wifi的mac地址无疑便是要初始化,装载wifi驱动后,通过cat /sys/class/net/wlan0/address去获取。实例程序如下,这里仅仅只获取mac地址,wifi初始化,装载模块的C程序不便提原创 2017-06-13 17:47:22 · 1674 阅读 · 0 评论 -
Tiny4412 Android5.0 定制media codecs相关的格式
tiny4412 4412 Android 5.0系统上,支持以下的media格式,文件位于: device/friendly-arm/tiny4412/media_codecs.xml打开后我们可以看到这个xml包含相关的音视频编解码支持的格式:<!-- Copyright (C) 2012 The Android Open Source Project Licensed unde原创 2017-06-12 23:41:41 · 1470 阅读 · 0 评论 -
MTK81系列 OTA更新升级路径转换
众所周知,OTA更新有两种方式,一种是网上直接download的线上模式,一种是SD卡升级模式,在MTK中,升级ota的时候传进来的路径需要通过转换成外部SD卡或者内部EMMC的路径,然后recovery会去通过判断command里的参数来执行对应的OTA升级包:对应的,在bootable/recovery/mt_recovery.cpp中找到:这个函数,这个函数的作用就是做路径转换。const原创 2017-06-03 17:51:32 · 1616 阅读 · 0 评论 -
Tiny4412 Android5.0 定制MTP显示的名字
找到frameworks/base/media/java/android/mtp/MtpDatabase.java找到以下方法: private int getDeviceProperty(int property, long[] outIntValue, char[] outStringValue) 对应的一个switch语句,找到以下case分支:case MtpConstants.DEVIC原创 2017-06-09 15:16:37 · 812 阅读 · 0 评论 -
Tiny4412 Android5.0 定制:编译生成img后如何删除原厂的apk
在android-5.0.2/build/core/Makefile的315行可以看到,这里是apk生成签名相关的地方。 315 name := $(TARGET_PRODUCT) 316 ifeq ($(TARGET_BUILD_TYPE),debug) 317 name := $(name)_debug 318 endif 319 name := $(name)-apkcerts-原创 2017-07-11 10:09:28 · 1204 阅读 · 0 评论 -
Android5.0 Recovery源代码分析与定制(一)
在Tiny4412的Android5.0源代码中: bootable/recovery/recovery.cpp是recovery程序的主文件。 仔细一看,对比了其它平台的recovery源代码,除了MTK对Recovery做了相应的定制外,其它的平台几乎没有看到,关于MTK平台,后续再分析。 关于Android5.0的recovery,有什么功能,在recovery.cpp中开头就已经做了详细的原创 2017-06-04 13:39:04 · 6202 阅读 · 5 评论 -
Android5.0 Recovery源代码分析与定制---recovery UI相关(二)
http://blog.youkuaiyun.com/morixinguan/article/details/72858346引用我的代码片 在上一篇文章中,我们大致的介绍了recovery的启动流程,那么,recovery升级或者做双清的时候,那些图形动画又是如何实现的呢?我们来看看代码: 以下这段代码位于recovery/screen_ui.cppvoid ScreenRecoveryUI::I原创 2017-06-10 17:12:04 · 2551 阅读 · 3 评论 -
Android系统中的LOST.DIR文件夹介绍
LOST.DIR是专门收集Android系统运行时意外丢失的文件而设置的文件夹,其收集的内容包括系统因为意外而没能保存的各类内存、交换、暂存等数据,软件的缓存数据,以及其他各类文件。只要系统发生意外(如在连接电脑拷贝数据过程中拔掉USB线、不小心删除了SD卡里某程序数据文件夹或者软件突然无法正常运行等),便会将发生意外的文件移到此目录下,以数字序列名称代替该文件的扩展名。注意:1、可以删除LOST转载 2017-06-12 17:52:43 · 2993 阅读 · 0 评论 -
Tiny4412 Android5.0 定制键值相关的文件
在4412中,开发板上只有四个按键,我们可以根据产品的需求自定义按键的功能。 在KeyEvent.java这个文件中,可以通过发出按键的事件,上报给上层。让上层app或者服务去接收处理。比如,我们可以看到这样的代码: 注释写得非常清楚,按下按键后,可以发出键值,按下的时间等等,也可以通过Android广播的形式去发送这些事件。 /** * Create a new key even原创 2017-06-12 21:15:50 · 1430 阅读 · 0 评论 -
Android开发之编写第一个Android应用程序实现按钮和复选框
搞Android系统这么久了,说实话,我连apk怎么写还真是不会,说实话能够看懂,简单改改就不错了,说来惭愧,我是嵌入式出身。最近开始学习Android应用开发,和我的底层结合起来,为了工作,咬着牙也要学下去!!! 首先,我使用的是Android Studio这个软件。 上谷歌中国网就可以下载到了,地址如下: https://developer.android.google.cn/develop/原创 2017-06-24 00:01:33 · 18927 阅读 · 0 评论