自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

Android 7.X touch input in frameworks 时序图

以下通过touch input为例, 通过时序图, 描述input event在frameworks的传递:1. [sequence_diagram]_read_and_process_touch_event 2. [sequence_diagram]_disptach_touch_event  

2018-05-12 17:32:19 79

Android系统中STOPPED应用无法接收广播的研究

之前写过一篇文章: Android 3.1后, 新安装的以及用户强行停止的apk, 无法监听广播的问题 今天终于研究了一下原理, 把代码执行逻辑贴上来:ContextImpl.sendBroadcast() ActivityManagerNative.getDefault().broadcastIntent() ActivityManagerServi...

2016-06-08 19:08:34 116

Android系统PRE_BOOT_COMPLETED广播的准备与发送

碰到个问题, 应用在收到BOOT_COMPLETED广播的时候, 往往已经进入桌面了.然后有同事提出来: 可以收PRE_BOOT_COMPLETED广播啊.于是就研究了一下这个广播的发送. ========================================本文地址: http://oliveexcel.iteye.com/blog/2302947=====...

2016-06-03 16:47:38 153

原创 Android 6.0工程下, 通过mm / mmm命令编译出classes.jar

在6.0的工程下面, 尝试通过mm / mmm编译单个module, 但是发现编译完后, 不产生classes.jar.请教过后, 得到这个方法:LOCAL_JACK_ENABLED := disabled

2016-05-06 18:33:25 69

原创 Android 6.0中的运行时权限控制

写了段代码, 无论如何无法正常执行:File dir = Environment.getExternalStorageDirectory();...File[] children = dir.listFiles(); // children取出来是null然后加了判断, 发现dir不可读:File dir = Environment.getExternalStorageDi...

2016-04-11 03:25:09 43

在IntelliJ IDEA中使用FloatingActionButton

20180530更新:在build.gradle的dependencies中添加以下内容即可:compile 'com.android.support:appcompat-v7:26.1.0' ================================ 以下为旧版本 ================================ 在IDEA里尝试使用Androi...

2016-04-01 13:21:43 52

原创 Android工程(AOSP)下对default java library新增库

疑问与解答:1. 在AOSP编译过程中, 每个module, 都需要通过Android.mk, 配置编译module需要依赖的lib. 这个配置一般通过 LOCAL_JAVA_LIBRARIES 或者 LOCAL_STATIC_JAVA_LIBRARIES 实现;2. 某些module, 如果不依赖特定的lib, 那么上述lib依赖关系的字段是可以不写的. 但是在这些module在编译...

2015-12-16 16:08:05 67

原创 Android 6.0下报错: UnsatisfiedLinkError: dlopen failed ... text relocations

20160617更新:使用Android 6.0的NDK重新编译so文件, 即可解决问题. =================================================================== 20151017内容:首先贴一下这个问题的官方答复:https://code.google.com/p/android-developer-...

2015-10-17 18:28:30 200

原创 在代码中获取Android theme中的attr属性值

Android的Theme是由各种attr组合而成, 每个attr对应了这个属性的一个引用, 这个引用又可以是各种东西. 在某些情况下, 我们需要获取非自定义的主题下某个属性的内容 (比如拿到系统默认的配色colorAccent), 操作方式举例一则:int defaultColor = 0xFF000000;int[] attrsArray = { andorid.r.attr...

2015-07-16 20:31:24 81

原创 Android在绘制View之前计算其高度 / 宽度

一般来说, View是需要在绘制到界面之后才能取到它的宽度 / 高度.如果需要在绘制之前就取到这些值, 则需要主动调用View的measure方法, 来提前计算其尺寸. 如下:final DisplayMetrics dm = mContext.getResources().getDisplayMetrics();viewToMeasure.measure( Vie...

2015-05-02 21:39:37 146

原创 新增AIDL文件至framework.jar的编译

需求:在frameworks/base/core/java下新增了aidl文件, 需要将其加入至编译 实现:1. 由于frameworks/base/core/java路径下的内容, 最终会编译至framework.jar, 故需要修改framework.jar的编译配置, 即frameworks/base/Android.mk2. 无论*.java还是*.aidl, 都是通...

2015-05-02 21:21:52 110

加入一个新的apk模块到Android系统镜像

需求:集成一个新的apk模块到Android系统镜像. 实现:这里要分两种情况, 一种是带源码的, 一种是不带源码的.1. 无论带源码与否, 都需要在工程目录下建议Android.mk文件, 并在其中指定模块名称:# 一种写法LOCAL_PACKAGE_NAME := [模块名]# 另一种写法LOCAL_MODULE := [模块名] 2. 带源码的, ...

2015-05-02 21:01:02 87

原创 集成一个三方jar包至Android系统镜像

需求:有一三方提供的SDK, 以jar包形式存在, 对Context等frameworks内容有依赖. 现需要将其编译进系统, 并供framework.jar中的类调用. 实现:1. 在frameworks/base/Android.mk中加入对jar包的引用:include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARI...

2015-04-15 18:25:58 80

原创 一个获取Android应用(或Activity)启动时间的工具

需求: 要求得到某个Activity的启动时间 实现: 1. adb shell下面存在am命令, 使用start -W -n参数, 即可获取Activity启动时间的信息;2. 上述Activity的启动信息中, 包含了本次启动时间. ================================= 需求变更的分割线 ========================...

2015-03-11 21:20:38 50

原创 AsyncTask的运行与Executor

帮同事看一个问题: 工程下面同时触发两个的AsyncTask, 预期可以同时执行, 但实际结果它们是顺序执行的. 思不得解, 百度一把, 看到有人问怎样控制多AsyncTask的运行优先级, 然后有人回复了一行代码:AsyncTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, null);虽然代码完全没有解决问题, 但是看得出, ...

2015-03-10 13:22:50 111

原创 Java通过代理创建Interface的匿名实现类

昨天帮同事看问题的时候碰到的, 简要描述一下实现. 需求:Java下反射获取Interface, 实例化它并同时实现其中的方法. 实现: 反射一个类好说, 从类名拿到Class再newInstance一把就有, 方法什么的, 也是Method.invoke一下就行.但是反射一个Interface, 以前没碰到过, 同事听别人说要用代理实现, 于是百度后试了一把, 果...

2015-02-12 22:00:00 52

原创 Android Accessibility : TalkBack的状态读取

碰到一个问题, 需要读取TalkBack的状态. 首先, 读了下TalkBack源码, 发现提供了一个StatusProvider. 于是可以这样读状态:1. 这个StatusProvider是一个ContentProvider的实现;2. 通过StatusProvider.query()可以查询TalkBack开启的状态.    连接Provider的URI:cont...

2015-01-20 18:09:13 261

原创 AsyncTask的用法与分析

今天指导一同事AsyncTask的使用, 然后果断被反指导了. 所以上来记录一下.  先说一下用AsyncTask时要注意的:      1. AsyncTask要与主线程有交互.           读代码的时候, 看到有人拿AsyncTask当Thread来用, 实际上是没用到位. 为什么说一定要与主线程有交互? 因为这就是AsyncTask存在的意义. 如果不需要与主线程...

2014-01-14 00:01:45 35

原创 Android应用自定义User Data管理(将Settings下的"清除数据"变成"管理空间")

标题略长, 还不好懂, 果断上图说明:以下是一般应用在Settings应用管理页面下, 显示的"清除数据"按钮 以下是通过配置将"清除数据"变成"管理空间"按钮的截图(点击按钮后, 会进入自定义的Activity): then, how to?找到程序AndroidManifest.xml下的Application标签, 加入属性android:manageSpaceA...

2013-11-30 14:19:55 142

原创 将Galaxy Nexus从CyanogenMod刷回原生系统

    搞到一台Galaxy Nexus, 然后到手的时候跑着CyanogenMod. 觉得不爽, 因为想用Google Play下东西, 然后搞了个Google服务包打进去, 果断开不了机...     几经折腾, 放弃手动添加Google服务, 心一横打算刷回原版系统, 不想却引出更大的折腾(折腾什么的, 此文不表).      列一下操作步骤:    1. (此步骤可...

2013-11-23 21:59:50 34

原创 TCP的超时重传

TCP连接建立后, 如果网络状态不稳定, 所发送的包无法得到反馈, 则会产生重传.重传的时候, 有以下几点值得关注:1. 重传次数重传次数的限制. 说白了就是如果一个包传输失败了, 不会让它无止境地重传下去, 需要对重传的次数作限制. 在Linux环境下, 这个次数是由以下文件内容决定的:a. 放弃连接前最少执行的重传次数: /proc/sys/net/ipv4/tcp_retr...

2013-11-19 00:00:52 41

Android 3.1后, 新安装的以及用户强行停止的apk, 无法监听广播的问题

         写了这么一个程序: 代码中只包含一个BroadcastReceiver, 监听开机广播, 然后静态注册在AndroidManifest.         碰到这么一个问题: 上述Receiver死活不触发.         找到这么一个解释: 软件必须要运行一次才能接收到开机广播的,这是谷歌在android高版本推出的安全机制         官方是这么说的(详见...

2013-11-02 23:59:58 75

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除