
Android-Framework
文章平均质量分 72
码到成功
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android检测系统中是否存在某进程
#include #include #include #include #include #include #include #define PROC_DIRECTORY "/proc/"static bool processExist(const char* processName, int len){ DIR *d; struct dirent *de;原创 2013-06-20 11:51:01 · 2062 阅读 · 0 评论 -
usb设备插入开机后无法识别问题
发现某些usb设备开机后插入可以正常使用,但是在插入状态下开机就无法识别,只能重新插拔一次设备节点才被创建。 android/system/vold/main.cpp中修改main函数,添加代码: coldboot("/sys/bus/usb/devices");原创 2013-10-16 12:46:45 · 3140 阅读 · 0 评论 -
Android音频系统探究——从SoundPool到AudioHardware
实际工作中遇到的问题,一个bug引发的思考,找到从App到Framework再到Audio HAL的通路。通过学习Android音频系统,定位出问题的层次。这是一次如何积累经验的记录。原创 2013-10-19 17:24:18 · 5061 阅读 · 1 评论 -
模拟按键消息
在android 4.0及之前版本上,模拟按键消息的接口可以用反射机制获取到:long now = SystemClock.uptimeMillis();KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, keyCode, 0);IWindowManager.Stub.asInterface(ServiceManag原创 2013-10-30 20:38:54 · 4521 阅读 · 0 评论 -
Jni中C++和Java的参数传递
如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子 JNI入门教程之HelloWorld篇 SUN JNI Tutorial这些资料的例子中,大多数只是输入一些简单的参数,获取没有参数。而在实际的使用过程中,往往需要对参数进行转载 2013-11-16 10:39:29 · 1203 阅读 · 0 评论 -
动态加载USB Audio Device
工作中遇到的问题,需要把编译在内核中的USB Audio单独编译为模块,然后在使用过程中动态加载。应用逻辑是,当2.4G空鼠端插入耳机,即发送F1键按键消息,加载usb audio驱动模块,拔出就发送F2,卸载usb audio驱动模块。原创 2013-11-18 17:03:56 · 3959 阅读 · 0 评论 -
android游戏手柄问题
新产品(一款android智能机顶盒)需要支持2.4G无线游戏手柄,这款游戏手柄是一个接收头、双手柄的配置。对游戏手柄一无所知,从头开始研究。 先用ubuntu调试。先把2.4g接收头插入PC上的usb接口,dmesg发现这是个hidraw设备,有两个设备节点被创建了:/dev/input/js0,/dev/input/js1。google下“linux游戏手柄驱动”,果然发现大把示例代原创 2013-11-12 14:39:50 · 5192 阅读 · 1 评论 -
service的启动控制
关于ctl.start控制service启动的源码原创 2013-12-28 14:47:29 · 2838 阅读 · 0 评论 -
OTA差分包制作
在make android系统后,会生成系统的img文件。make otapackage 会生成sd卡用的全部系统升级包,有260M多。要生成增量升级包。需要按以下步骤。mkdir ~ /OTA source build/envsetup.sh; choosecom 1 1 7 engmake;make otapackage先将编译生成的转载 2013-12-23 15:06:47 · 3556 阅读 · 0 评论 -
android中打印函数调用栈、内存使用、屏幕分辨率
1、 打印当前函数调用栈 java.util.Map ts = Thread.getAllStackTraces(); StackTraceElement[] ste = ts.get(Thread.currentThread()); for (StackTraceElement s :转载 2013-10-22 14:39:19 · 1995 阅读 · 0 评论 -
Android Logo生成(PNG转PPM、PNG转RLE)
记录下转化方法,供自己日后查阅。pngtopnm logo_skytone_clut224.png > logo_skytone_clut224-tmp.pnmpnmquant 224 logo_skytone_clut224-tmp.pnm > logo_skytone_clut224.pnmpnmtoplainpnm logo_skytone原创 2014-03-27 17:59:00 · 2977 阅读 · 0 评论 -
Android系统广播
String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。 String ALL_APPS_ACTION 动作:列举所有可用的应用。输入:无。 String ALTERNATIVE_CATEGORY 类别:说明 activity 是用户正在浏览的数据的一个可选操作。 String ANSWER_ACTION 动作:处理拨入的电话。 Str原创 2013-10-15 11:45:13 · 941 阅读 · 0 评论 -
编译错误trouble writing output: Too many methods: 65544; max is 65536.
问题描述:在Framework上新增本地接口后,报出错误:trouble writing output: Too many methods: 65544; max is 65536. By package: ......该问题是由于Framework下无法容纳超过65536个接口导致的解决方法:修改frameworks\base\Andr原创 2013-07-26 13:46:26 · 3639 阅读 · 0 评论 -
模拟按键消息
在4.0之前版本时,模拟按键消息可以通过以下方式:long now = SystemClock.uptimeMillis();KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, keyCode, 0);IWindowManager.Stub.asInterface(ServiceManager.getServic原创 2013-07-26 13:45:03 · 914 阅读 · 0 评论 -
Android Framework中修改鼠标按键功能
这是实际工作中遇到问题:要求可以在设置中修改鼠标上的Left、Middle、Right Button对应的功能,功能有4种:左键点击,右键点击,菜单键、返回键。按键和功能的对应关系可以用系统属性来存储,Setting界面可以用RadioButton来完成,这些没什么可说的。下面要记录的是鼠标按键是如何更改功能的,在这之前先回顾一下基础知识——输入事件的处理流程。 首先从Kerne原创 2013-06-17 14:41:22 · 6988 阅读 · 6 评论 -
BroadcastReciever中有阻塞调用导致死机
现象: CPU占用率高,系统卡死log: Skipped 47 frames! The application may be doing too much work on its main thread.原因: 调用的底层接口中有阻塞:sem_wait(&_uart_state.sem);创建一个线程来运行需要处理的代码:if原创 2013-06-25 13:28:12 · 1937 阅读 · 0 评论 -
Android设备目录和节点的创建
在编写linux设备驱动程序的时候,很多时候都是利用mknod命令来手动创建设备节点的,带上名字和主次设备号就可以在/dev目录下生成设备节点。同样Android沿用了linux内核,很多设备驱动的节点是又是什么时候创建的呢? 在kernel自解压模块加载完成之后,会去运行android第一个应用程序init。在init.c的main函数中。System/core/init/i转载 2013-07-10 11:23:40 · 1703 阅读 · 0 评论 -
增加按键音
在frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中的interceptKeyBeforeDispatching函数中增加以下:if(!down){ AudioManager am = (AudioManager)mContext.原创 2013-06-25 13:19:36 · 1193 阅读 · 0 评论 -
android init.rc中的service
android的init进程初始化的时候,除了对系统作一些必要的初始化外,就是启动service了。而service是定义在init脚本中的,故很有必要了解一下,init中对service的处理。struct service 该数据结构保存了和service相关的信息。service下可以定义option,这些option被保存在这个结构体中;除此之外还保存了service的转载 2013-07-17 15:05:55 · 5179 阅读 · 0 评论 -
往android的内核添加驱动及ueventd.rc 修改
向android的内核添加驱动,其实就是向linux内核添加驱动。主要在两个文件里添加点信息,一个是Kconfig文件,一个是Makefile文件。比如你添加的驱动你代码放到drivers目录下面的XXX目录,那么修在该目录下的Kconfig文件和Makefile文件。具体的修改方法:比如我现在修改drivers/staging/android/下的Kconfig文件。co转载 2013-07-19 09:48:18 · 1427 阅读 · 0 评论 -
Android平台中MCE USB设备支持
应用程序需要对MCE Usb设备进行操作。首先使用UsbManager的getDeviceList接口获取USB设备列表时,引发PackageManager.PERMISSION_DENIED异常。 应用程序的确已经在AndroidManifest.xml中声明了所需的权限,所以从Framework层找问题的原因。 首先看out目录下/system/etc/permissions,发现缺原创 2013-07-19 16:46:36 · 2074 阅读 · 1 评论 -
usb设备被多次挂载问题
发现系统启动后,同一个usb设备被挂载了多次,导致文件管理器相关应用显示出现问题。usb设备挂载的流程在android/system/vold/Volume.cpp中,由Volume::mountUdiskVol函数处理。在mount前判断该设备是否已被挂载,可解决该问题:bool isUsbDeviceMounted(const char *path) { char device[2原创 2013-07-22 15:58:24 · 2022 阅读 · 0 评论 -
android开机logo分析和优化
android系统中,有两处可以做logo的打印。第一处是在kernel中,显示设备初始化完毕后,会将一个ppm图片复制到fb中;第二处是在android boot阶段,将一个rle格式的图片解压缩到fb中。下面将分析图像格式和logo显示的相关代码,方便我们根据自己产品的需要,选择合适的logo显示方式。原创 2013-07-22 18:23:55 · 2549 阅读 · 0 评论 -
Android自带的toolbox分析及扩展
转自:http://blog.youkuaiyun.com/a345017062/article/details/6250619折腾了几天,被Android那点儿少得可怜的shell命令折磨的死去活来,终于下定了革命的决心。看一下怎么把渺小的toolbox替换成伟大的busybox吧。先大致描述一下Android系统中的shell程序部分。shell实现分为两部分:一、shell解转载 2013-07-26 10:42:07 · 861 阅读 · 0 评论 -
关于framework-res中字符串添加
在framework-res中添加字符串test_string,修改以下文件: frameworks/base/core/res/res/values/public.xml frameworks/base/core/res/res/values/strings.xml 编译(mmm framework/base/core/res -B),之后检验是否将test原创 2014-06-13 12:37:51 · 4160 阅读 · 0 评论