
Android
文章平均质量分 67
laisse
这个作者很懒,什么都没留下…
展开
-
锁屏简介
锁屏代码位置android4.4版本之前锁屏代码位于: frameworks\base\policy\src\com\android\internal\policy\impl\keyguard\ android4.4版本上锁屏代码位于: frameworks\base\packages\Keyguard\src\com\android\keyguard\ 并有单独的apk: /system/原创 2016-06-20 15:52:51 · 1601 阅读 · 0 评论 -
Activity的四种启动模式-SingleTask和SingleInstance
四种启动模式经常忘记, 在这里用例子记录下. 两个Activity用来测试,分别是TaskOne 和 TaskTwo. TaskOne有两个Activity, 代码如下:public class ActivityOne extends Activity implements View.OnClickListener{ private static final String TAG = "原创 2016-03-08 15:19:15 · 1774 阅读 · 0 评论 -
AIDL Service 的使用
本文主要介绍怎么实现AIDL service并且添加回调。 1.需要定义两个AIDL interfaceITestService为测试的service, ITestCallback 为回调的结果。// ITestService.aidlpackage com.htc.soundrecorder;import com.htc.soundrecorder.ITestCallback;// Decl原创 2015-11-13 17:50:30 · 663 阅读 · 0 评论 -
录音计时的TimeView
介绍继承View实现计时功能的视图继承View的子类必须有自己的构造函数public class TimeView extends View{ public TimeView(Context context) { super(context); //初始化资源 init(context); } public TimeVi原创 2015-11-10 19:44:49 · 1377 阅读 · 0 评论 -
Android layout_weight 属性解密
在LinearLayout中使用 android:layout_weight,常常不能得到想要的结果,现在详细解密一下。我们都知道,初始化view的时候会调用如下方法进行height 和 width的设置。@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){//widthMeasureSp原创 2015-12-18 11:43:23 · 617 阅读 · 0 评论 -
选择图片剪切功能
从媒体数据库读取图片文件并剪切。 选择图片如下:Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("image/*");startActivityForResult(intent, REQUEST_CODE);获得的原创 2015-11-23 20:19:05 · 606 阅读 · 0 评论 -
Android min, max, targetSDK详解
使用方法<uses-sdk android:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer" />minSdkVersion指明APP能够安装的系统API的最低版本。如果系统API版本小于这个值,APP将无法安装。 这个值必须声原创 2015-11-13 11:54:57 · 2358 阅读 · 0 评论 -
Android ANR-ContentProvider
App can call “ContentProviderClient.setDetectNotResponding()” to enable this ANR mechanism, that’s used for App detecting the timeout of ContentProvider operations. MechanismContentResolver process原创 2015-08-03 17:18:04 · 4734 阅读 · 1 评论 -
Android ANR-Keydispatch timeout
Code flow of ANRCode flow of InputSystemCode flow of dispatch input event flow of Scenario normal flow // notifyKey() / notifyMotion()01-15 11:55:56.713 937 1127 D InputDispatcher: notifyM-evT原创 2015-08-03 17:34:43 · 7238 阅读 · 2 评论 -
YUV420SP和YUV420SP32M的区别
在高通8916和8974平台上使用camera录像的时候,录像的格式是CAMERA_YUV_420_NV12。此格式对应的YUV格式是YUV420SP32M。YUV32SP对应的大小:W * H * 3 / 2 YUV420SP32M这样的存储方式对应的文件存储格式以及大小计算方式如下:#ifndef __MEDIA_INFO_H__#define __MEDIA_INFO_H__#ifndef原创 2015-10-29 15:45:34 · 874 阅读 · 0 评论 -
Android SurfaceTexture
SurfaceTexture是从Android3.0(API 11)加入的一个新类。这个类跟SurfaceView很像,可以从camera preview或者video decode里面获取图像流(image stream)。但是,和SurfaceView不同的是,SurfaceTexture在接收图像流之后,不需要显示出来。有做过Android camera开发的人都知道,比较头疼的一个问题就是,转载 2015-10-29 15:36:36 · 1096 阅读 · 0 评论 -
REPO 详解
Repo Repo是一个用Python语言开发的命令工作 ,可以更文件地进行多版本库的管理。Repo是对Git进行了一定的封装,简化了对多个Git版本库的管理。对于repo管理的任何一个版本库,都需要使用Git命令进行操作。Repo的使用过程大致如下: 运行repo init命令,克隆Android的一个清单库。这个清单库是通过XML技术建立的版本库清单。 清单库中的manifest.xml文原创 2015-03-31 13:51:07 · 779 阅读 · 0 评论 -
Intent启动Activity的Flag
除了常用的flag之外, 主要记录一下容易忘记,但很重要的flag. 1, FLAG_ACTIVITY_NEW_DOCUMENT这个flag的在Api21以前是FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET. 主要作用就是当Activity所在的Task被reset之后, 使用此Flag 发送Intent的Activity实例之上的所有Activity都会被销毁. 一个很典型原创 2016-03-10 11:53:03 · 842 阅读 · 0 评论 -
Stagefright中OMX的数据传输流程
OMXCodec创建完边解码组件之后, 需要对每一个port口进行buffer的分配.主要流程如下 需要对OMXCodec中buffer的管理说一下:struct BufferInfo { IOMX::buffer_id mBuffer; //BufferInfo的唯一标示 BufferStatus mStatus; //OWNED_BY_US OWNE原创 2016-04-25 15:38:21 · 1254 阅读 · 0 评论 -
如何添加媒体类型和对应的编解码器
Stagefright中OMXCodec中根据Extractor中的MIME创建对应编解码器组件的流程如下: 所有支持的编解码类型都是在AwesomePlayer初始化的时候就创建好的. 硬编解码器从hardware/XXX/media/libstagefrighthw/libstagefrighthw.so中加载 软编解码器从frameworks/av/media/libstagefrigh原创 2016-04-25 15:49:08 · 1944 阅读 · 0 评论 -
PorterDuff及Xfermode详解
使用Paint绘画的时候,需要对Paint设置渲染效果. 不同的渲染效果可以实现不同的叠加或者清除效果, PorterDuff.Mode为枚举类,一共有16个枚举值:1.PorterDuff.Mode.CLEAR 所绘制不会提交到画布上。 2.PorterDuff.Mode.SRC显示上层绘制图片 3.PorterDuff.Mode.DST显示下层绘制图片 4.PorterDuff.Mode.原创 2016-06-20 14:54:58 · 1030 阅读 · 0 评论 -
View的动画效果
想要实线View的平滑移动, 需要通过View的setTranslationY()和setTranslationX()方法.具体使用方法如下: @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, d原创 2016-06-12 15:45:11 · 599 阅读 · 0 评论 -
开发稳定的应用的技巧
应用稳定性测试方法开发和维护Android应用程序几乎不可能没有bug, 但要想尽可能发现程序中的bug,需要系列强有力的自动化测试工具:随机事件测试: Monkey固定时间测试 MonkeyRunneruiautomatorMTBF(运行商认证使用此工具)固定功能测试:基于JUnit的TestCaseJava语法检查: Coverity(付费,静态和动态检查)FindBugs(E原创 2016-06-16 11:26:03 · 1080 阅读 · 0 评论 -
toolbar 和 statusbar
使用toolbar的时候需要设置AppTheme, 主要是对toolbar和statusbar的效果进行设置. 如果要两个看上去是浸入式的,没有分割线的. 就需要把两个颜色设为同样的.<resources> <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> <item原创 2016-06-14 16:49:39 · 1398 阅读 · 0 评论 -
RecyclerView的使用
RecyclerView是优化后的ListView,使用起来非常简单.主要记录一下使用方法以及注意点 使用RecyclerView需要设定LayoutManager.一般有三种//线性布局,一行只有一个数据LinearLayoutManager//网格布局,可以制定一行有几列GridLayoutManager//增强版网格布局,可以制定水平还是竖直排列StaggeredGridLayou原创 2016-06-14 16:45:35 · 709 阅读 · 0 评论 -
gradle 编译脚本
以下是一个标准的gradle编译脚本,所有需要compile的lib版本不要比compileSdkVersion小apply plugin: 'com.android.application'android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationI原创 2016-06-13 15:58:42 · 719 阅读 · 0 评论 -
Android Studio搭建NDK
记录用Android Studio创建NDK工程的步骤创建APP工程.除了Acticity之外,添加一个NDK classpublic class JniLib { static { System.loadLibrary("JniLib"); } public static native String getNativeText();}通过以下命令生成jni的头原创 2016-06-08 17:31:40 · 467 阅读 · 0 评论 -
Dumpsys meminfo
1 Dumpsys meminfoThis command can be used to observe how your app’s memory is distributed to different types of RAM allocation.2 Command usageadb shell dumpsys meminfo <package_name or pid>3 Output s原创 2016-06-08 14:35:34 · 3537 阅读 · 1 评论 -
Competitor Heap Limit
Google Suggested minimal Java heap limit setting from chapter 3.7 of Android Compatibility Definition Document as below table. Although some devices might set higher heap limit than Google suggested mi原创 2016-06-08 14:22:08 · 432 阅读 · 0 评论 -
Multimedia memory
Multimedia memory guidelineMultimedia related app has more chances to allocate multimedia memory directly or indirectly such as camera, album, VideoHighlight, video player, music player. For example,原创 2016-06-08 14:08:40 · 1061 阅读 · 0 评论 -
自定义ViewGroup和其子View
ViewGroup 初始化计算width,height。顺序如下05-13 13:41:57.649 D/GestureLockFred(32644): onMeasure 05-13 13:41:57.649 D/GestureLockFred(32644): onMeasure 05-13 13:41:57.719 D/GestureLockFred(32644): onMeasure 0原创 2016-05-18 11:57:45 · 2675 阅读 · 0 评论 -
Android 搭建系统服务
本文以系统中已经有的LightsService为例,逐步讲解在系统中搭建系统服务的过程。有几个前提需要说明: 1.由于系统内部就有LightsService这个类(在原生的代码中,它并不是一个真正的服务,只是一个普通类),所以我们无需再建立此类,并且可以根据此类的内容确定需要提供的服务内容。 2. 此处LightsService中需要提供的服务主要是将Light(内部类)的一些操作提供出去原创 2015-10-29 15:32:17 · 783 阅读 · 0 评论 -
Android 搭建系统服务
本文以系统中已经有的LightsService为例,逐步讲解在系统中搭建系统服务的过程。有几个前提需要说明: 1. 由于系统内部就有LightsService这个类(在原生的代码中,它并不是一个真正的服务,只是一个普通类),所以我们无需再建立此类,并且可以根据此类的内容确定需要提供的服务内容。 2. 此处LightsService中需要提供的服务主要是将Light(内部类)的一些操作提供出原创 2015-04-01 17:25:29 · 592 阅读 · 0 评论 -
同时获取Camera预览和录像视频流
介绍除了默认的Preview数据流之外,增加录像数据流。要求同时获取,并能够支持不同的分辨率。 1. 描述高通平台支持同时获取Preview和录像,要获取双路视频流的话,除了Android系统默认支持获取Preview的数据流外,只需要在软件层面增加获取录像数据流的操作。以下详细介绍如何获取录像的数据流,Preview不做介绍。2. 分析首先,camera AF层基本的框架图如下: Camer原创 2015-11-13 09:53:34 · 9288 阅读 · 4 评论 -
读取屏幕参数的方法
提供几种方法获得屏幕参数, 包括分辨率,像素密度,伸缩密度1.通过WindowManager获得默认的显示参数WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();Log.d(TAG, " X: " + display.原创 2015-11-10 15:01:27 · 1866 阅读 · 0 评论 -
dp, dpi, ppi, sp, px 详细介绍
参考资料 http://www.zhihu.com/question/21220154/answer/18584739 http://mp.weixin.qq.com/s?__biz=MjM5NTA0NjY4MA==&mid=203073243&idx=1&sn=c71ff9f0c0fb96fea2d3ea2b213018e1#rd概念解释dpi是dot per inch,每平方英寸多少原创 2015-11-10 19:02:25 · 814 阅读 · 0 评论 -
录音计时的实现方法
录音中需要显示录音长度,显示需要按S录音start的时候记下当时的时间mStartTimeStamp = System.currentTimeMillis();mStartTimeStamp 为录音开始时间。 录音的时间通过Handler发送。times为和开始时间的差距。long currentTimeStamp = System.currentTimeMillis();long times原创 2015-11-09 19:56:21 · 1350 阅读 · 1 评论 -
多用户
检查当前用户用户是否是ownerboolean isOwner = false;UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);if (um != null) { UserHandle userHandle = android.os.Process.myUserHandle();原创 2015-11-07 19:38:29 · 828 阅读 · 0 评论 -
Android ADB
1,df 查看分区情况Filesystem Size Used Free Blksize /dev 934.3M 48.0K 934.3M 4096 /sys/fs/cgroup 934.3M 12.0K 934.3M 4096 /mnt/asec原创 2015-10-29 15:58:12 · 401 阅读 · 0 评论 -
Java 反射机制
TBD原创 2015-11-07 15:49:51 · 377 阅读 · 0 评论 -
Android Download status code
Download 相关status定义在 frameworks/base/core/java/android/provider/Downloads.java packages/providers/DownloadProvider/src/com/android/providers/downloads/Constants.javaAOSP DefineSTATUS_WAITING_FOR_NETW原创 2015-11-07 14:18:34 · 592 阅读 · 0 评论 -
Android Framework tips
Dump Device InfoDump surface informationadb shell dumpsys SurfaceFlingerDump window information1. dump windowadb shell dumpsys window2. dump window with detailsadb shell dumpsys window all3. dump v原创 2015-11-07 14:37:37 · 817 阅读 · 0 评论 -
Android Security Model
Android security model are based on: - Linux 基于用户的保护 Linux user-based protection - 保证APP对系统中其他进程的绝缘,APP不应该被其他APP或者进程直接读写数据或内存 - root 和系统进程是最常受到恶意攻击,所以保持最小数量的root和系统进程对于安全设备是至关重要的 - APK签原创 2015-11-07 12:16:30 · 1182 阅读 · 0 评论 -
Input:Key Logs
07-29 13:27:43.584 989 1072 W InputDispatcher: channel ‘425911c8 com.android.settings.Settings (s)’ ~ Consumer closed input channel or an error occurred. events=0x9 //0x9= ALOOPER_EVENT_INPUT (1)原创 2015-11-07 15:10:42 · 620 阅读 · 0 评论 -
Android App相关的读写路径
Android 4.4之后internal的路径就不需要权限了。没有权限的时候,可以看一下External是否可读Log.d(TAG, " ExternalStorageWritable: " + isExternalStorageWriteable());Log.d(TAG, " ExternalStorageEReadable: " + isExternalStorageReadable()原创 2015-11-11 11:43:10 · 2490 阅读 · 0 评论