在项目中碰到这样的问题: 由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成: 1.单击事件:就是普通key的单击: 2.双击事件:500ms内同一按键单击两次: 3.长按事件:同一按键长按超过1000ms(系统中长按事件为500ms): 4.组合按键:两个以上按键同时按住: 其中的keyevent可以来自Activity.View子类的dispatchKeyEvent方法,也可以是我…
这次打算来梳理一下 Android Tv 中的按键点击事件 KeyEvent 的分发处理流程.一谈到点击事件机制,网上资料已经非常齐全了,像什么分发.拦截.处理三大流程啊:或者 dispatchTouchEvent.onInterceptTouchEvent.onTouchEvent 啊:再或者返回 true 表示消费,返回 false 不处理啊:还有说整个流程是个 U 型分发处理,什么总经理发布任务到员工处理反馈啊之类的.前辈们早已为我们梳理了一篇篇干货,也在尽可能的写得通俗.易懂. 但是今天…
在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制:这些组件甚至是可以位于不同的进程中,这样它就像Binder机制一样,起到进程间通信的作用:本文通过一个简单的例子来学习Android系统的广播机制,为后续分析广播机制的源代码作准备. 在Android系统中,为什么需要广播机制呢?广播机制,本质上它就是一种组件间的通信方式,如果是两个组件位于不同的进程当中,那么可以用Binder机制来实现,如果两个组件是在同一个进程中,那么它们之间可以用来通信的方式…
Android系统中TextView默认显示中文时会比较紧凑,不是很美观.为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacingMultiplier. 关于Android下TextView中文换行问题,可查看Android自定义view-文本自动换行. 1.android:lineSpacingExtra设置行间距,如”3dp”. 2.android:lineSpacingMultiplier设置行间距的倍数,如”1.2″…
Android系统对话框--自定义关闭 Dialog是我们在项目中经常用到的,5.x以后的Dialog也很好看,很安卓风,Android也给我们提供了新的包,低版本可以显示一样的效果.我们在使用的导入v7包下的Dialog即可. 样式不是重点,我们点击Button以后,Dialog就会自动关闭,像这样: 但是有的情况,我们是想要点击完Button以后和我们一些交互的,不要立即关闭,我们想要自定义关闭,像这样: 下面进入正题了 自定义关闭 原生的使用方法,就不再介绍了,可以参照以前的文章:Andr…
AIDL,Android Interface definition language的缩写,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口.最近看了下AIDL在Android系统中的用法,在网上看到很多初学的朋友不太明白AIDL的实际作用,android提供了很多进程间通信的组件,像action.broadcast.contentprovide都可以实现进程间的通信,为什么还要用AIDL这个东西呢?我在android源码中实现了一个自己写的AIDL例子,用以…
Android系统中的6种模式 1:一般启动模式(normal mode):    功能是正常启动手机,方法为关机状态下按电源键启动. 2:安全模式(safe mode):    此模式和正常启动一样,但没有登记Google,所以不能访问Market或使用你的Google账号.操作方法为按住“menu”键,按电源键启动手机,直至手机启动完成松开“menu”键. 3:恢复模式(recovery mode)     可打开命令解释程序(shell),刷新映像文件(flash image),执行备份等…
由于是浅析,所以我只分析常用的接口,注意是Android系统中的JAVA类,可能和JDK的源码有区别. 首先从构造函数开始, /** * Min capacity (other than zero) for a HashMap. Must be a power of two * greater than 1 (and less than 1 << 30). */ private static final int MINIMUM_CAPACITY = 4; /** * Max capacity…
如:在frameworks/opt/net/ims/src/java/com/android/ims/ImsManager.java if (SystemProperties.get("persist.mtk_dynamic_ims_switch").equals("1")) { 我们想知道系统中persist.mtk_dynamic_ims_switch的值是多少,可以用如下方法 adb shell 进入android文件系统中: shell@GF179:/ $…
问题:使用adb pull命令从android系统中读取文件失败.显示:Permission denied   原因:是由于文件权限原因引起.       使用ls -l命令查看android系统中的文件权限为:     -rw-rw---- app_51   app_51     也就是说,该文件只有app_51用户以及app_51群组拥有读写权限,而adb shell的用户为shell,既不是app_51用户,也不在app_51群组中,所以没有权限读取这个文件.所以就出现了     Perm…