自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 锁屏简介

锁屏代码位置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 1430

原创 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 798

原创 开发稳定的应用的技巧

应用稳定性测试方法开发和维护Android应用程序几乎不可能没有bug, 但要想尽可能发现程序中的bug,需要系列强有力的自动化测试工具:随机事件测试: Monkey固定时间测试 MonkeyRunneruiautomatorMTBF(运行商认证使用此工具)固定功能测试:基于JUnit的TestCaseJava语法检查: Coverity(付费,静态和动态检查)FindBugs(E

2016-06-16 11:26:03 1022

原创 toolbar 和 statusbar

使用toolbar的时候需要设置AppTheme, 主要是对toolbar和statusbar的效果进行设置. 如果要两个看上去是浸入式的,没有分割线的. 就需要把两个颜色设为同样的.<resources> <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> <item

2016-06-14 16:49:39 1361

原创 RecyclerView的使用

RecyclerView是优化后的ListView,使用起来非常简单.主要记录一下使用方法以及注意点 使用RecyclerView需要设定LayoutManager.一般有三种//线性布局,一行只有一个数据LinearLayoutManager//网格布局,可以制定一行有几列GridLayoutManager//增强版网格布局,可以制定水平还是竖直排列StaggeredGridLayou

2016-06-14 16:45:35 674

原创 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 675

原创 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 559

原创 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 431

原创 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 3478 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 389

原创 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 975

原创 自定义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 2629

原创 如何添加媒体类型和对应的编解码器

Stagefright中OMXCodec中根据Extractor中的MIME创建对应编解码器组件的流程如下: 所有支持的编解码类型都是在AwesomePlayer初始化的时候就创建好的. 硬编解码器从hardware/XXX/media/libstagefrighthw/libstagefrighthw.so中加载 软编解码器从frameworks/av/media/libstagefrigh

2016-04-25 15:49:08 1882

原创 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 1189

原创 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 667

原创 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 1702

原创 Android layout_weight 属性解密

在LinearLayout中使用 android:layout_weight,常常不能得到想要的结果,现在详细解密一下。我们都知道,初始化view的时候会调用如下方法进行height 和 width的设置。@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){//widthMeasureSp

2015-12-18 11:43:23 558

原创 选择图片剪切功能

从媒体数据库读取图片文件并剪切。 选择图片如下: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 572

原创 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 624

原创 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 2149

原创 同时获取Camera预览和录像视频流

介绍除了默认的Preview数据流之外,增加录像数据流。要求同时获取,并能够支持不同的分辨率。 1. 描述高通平台支持同时获取Preview和录像,要获取双路视频流的话,除了Android系统默认支持获取Preview的数据流外,只需要在软件层面增加获取录像数据流的操作。以下详细介绍如何获取录像的数据流,Preview不做介绍。2. 分析首先,camera AF层基本的框架图如下: Camer

2015-11-13 09:53:34 9050 4

原创 Android App相关的读写路径

Android 4.4之后internal的路径就不需要权限了。没有权限的时候,可以看一下External是否可读Log.d(TAG, " ExternalStorageWritable: " + isExternalStorageWriteable());Log.d(TAG, " ExternalStorageEReadable: " + isExternalStorageReadable()

2015-11-11 11:43:10 2412

原创 录音计时的TimeView

介绍继承View实现计时功能的视图继承View的子类必须有自己的构造函数public class TimeView extends View{ public TimeView(Context context) { super(context); //初始化资源 init(context); } public TimeVi

2015-11-10 19:44:49 1350

原创 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 678

原创 读取屏幕参数的方法

提供几种方法获得屏幕参数, 包括分辨率,像素密度,伸缩密度1.通过WindowManager获得默认的显示参数WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();Log.d(TAG, " X: " + display.

2015-11-10 15:01:27 1684

原创 录音计时的实现方法

录音中需要显示录音长度,显示需要按S录音start的时候记下当时的时间mStartTimeStamp = System.currentTimeMillis();mStartTimeStamp 为录音开始时间。 录音的时间通过Handler发送。times为和开始时间的差距。long currentTimeStamp = System.currentTimeMillis();long times

2015-11-09 19:56:21 1257 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 752

原创 Java 反射机制

TBD

2015-11-07 15:49:51 339

原创 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 590

原创 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 740

原创 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 553

原创 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 1117

原创 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 365

原创 Android 积累

1,获取Tele Service并获取当前手机是否处于来电状态(FW层)TelecomManager telecomManager = getTelecommService();if (telecomManager != null && telecomManager.isRinging()) { Log.i(TAG, "Ignoring HOME; there's a ringing in

2015-10-29 15:55:22 365

原创 条件操作符和sizeof操作符

1. 条件操作符条件操作符是C++中唯一的三元操作符,它允许将简单的if-els判断语句嵌入表达式中。条件操作符的语法格式为:cond ? expr1 ; expr2;1.1 避免条件操作符的深度嵌套int max = i > j ? i > k ? i : k ? j > k ? j : k;可以用更长但更简单的比较语句实现相同的功能:int max =

2015-10-29 15:51:57 430

原创 Android onClick

在layout中直接声明onclick方法:<Button android:id="@+id/button_capture" android:layout_width = "fill_parent" android:layout_height="wrap_content" android:layout_gravity = "bottom" android:o

2015-10-29 15:47:50 653

原创 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 838

原创 动态 内存管理

new和delete表达式 定义变量时,必须制定其数据类型和名字。而动态创建对象时,只需指定其数据类型,而不必为该对象命名。取而代之的是,new表达式返回指向新创建对象的指针,我们通过该指针来访问此对象。int i; int *pi = new int;这个new表达式在自由存储区中分配创建了一个整型对象,并返回此对象的地址,并用该地址初始化指针pi。动态

2015-10-29 15:40:03 364

转载 Android SurfaceTexture

SurfaceTexture是从Android3.0(API 11)加入的一个新类。这个类跟SurfaceView很像,可以从camera preview或者video decode里面获取图像流(image stream)。但是,和SurfaceView不同的是,SurfaceTexture在接收图像流之后,不需要显示出来。有做过Android camera开发的人都知道,比较头疼的一个问题就是,

2015-10-29 15:36:36 1054

原创 Android 搭建系统服务

本文以系统中已经有的LightsService为例,逐步讲解在系统中搭建系统服务的过程。有几个前提需要说明: 1.由于系统内部就有LightsService这个类(在原生的代码中,它并不是一个真正的服务,只是一个普通类),所以我们无需再建立此类,并且可以根据此类的内容确定需要提供的服务内容。 2. 此处LightsService中需要提供的服务主要是将Light(内部类)的一些操作提供出去

2015-10-29 15:32:17 722

空空如也

空空如也

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

TA关注的人

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