<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cheng20150809的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cheng20150809</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cheng20150809]]></copyright><item><title><![CDATA[Android View之View绘制原理]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/52279797</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/52279797</guid><author>cheng20150809</author><pubDate>Mon, 22 Aug 2016 20:15:50 +0800</pubDate><description><![CDATA[1. View的绘制原理
android.graphics 相关类
Paint： 画笔
Cancas： 画布
Bitmap： Canvas背景图片
Color、Matrix、Drawable


简单绘制
private
Bitmap getBitmap(){
int
width = 
300;
int
height = 
300;
Bitmap bmp = Bi]]></description><category></category></item><item><title><![CDATA[Android View之UI模板]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/52276374</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/52276374</guid><author>cheng20150809</author><pubDate>Mon, 22 Aug 2016 14:16:37 +0800</pubDate><description><![CDATA[1. 设计需要的属性values文件夹中创建attrs.xml的文件，在的tag内添加我们所需要的属性声明resources>代表drawable对象-->declare-styleable name="Topbar">        attr name="centerTitle" format="string"/>        attr name="centerTitleTextSize" f]]></description><category></category></item><item><title><![CDATA[Android Studio + NDK JNI调用openCV图像处理]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/51367629</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/51367629</guid><author>cheng20150809</author><pubDate>Sun, 15 May 2016 23:20:28 +0800</pubDate><description><![CDATA[本文介绍如何通过android studio通过jni调用openCV，不使用Opencv Manager，使用静态编译openCV的方式，生成单独的一个so文件。

可先看上篇文章http://blog.youkuaiyun.com/cheng20150809/article/details/51348420，AndroidStudio基本的JNI编程。

1、新建一个空的Activity工程，添加Add-]]></description><category></category></item><item><title><![CDATA[Android Studio JNI编程以及NDK环境配置]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/51348420</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/51348420</guid><author>cheng20150809</author><pubDate>Sun, 08 May 2016 23:01:02 +0800</pubDate><description><![CDATA[1. 新建一个工程，并添加JNI文件夹。





2. 在生成的jni文件夹中添加cpp文件。




3. 在添加的cpp文件添加代码
这里我们采用动态注册的方式来添加jni函数，比较方便，不需要用javah生成.h文件

#include 
#include 
#include 
#include 

/* 输出Log的宏 */
#ifndef LOG]]></description><category></category></item><item><title><![CDATA[Android Native Browser下载存储路径选择]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/49048975</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/49048975</guid><author>cheng20150809</author><pubDate>Sun, 11 Oct 2015 16:33:03 +0800</pubDate><description><![CDATA[Browser下载通过Controller.java中的onDownloadStart()调用DownloadHandler.java中的onDownloadStartNoStream()进行下载。下载任务则调用Android通用接口DownloadManager进行下载，下载内容的存储位置，则在下载前进行设定。看如下函数： 
(1) DownloadHandler.javaString mDown]]></description><category></category></item><item><title><![CDATA[Download下载DRM]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48686761</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48686761</guid><author>cheng20150809</author><pubDate>Wed, 23 Sep 2015 20:26:13 +0800</pubDate><description><![CDATA[4. DRM文件下载解析流程
finalizeDestinationFile(mInfoDelta);  DownloadThread.java
private void finalizeDestinationFile(DownloadInfoDelta state) {  // DownloadInfoDelta是啥？
    if (state.mFileName != null) {]]></description><category></category></item><item><title><![CDATA[Download数据库及一些常量解析]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48686427</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48686427</guid><author>cheng20150809</author><pubDate>Wed, 23 Sep 2015 20:09:20 +0800</pubDate><description><![CDATA[Download数据库含义
Downloads内部类Impl有具体含义
public static final class Impl implements BaseColumns {
    private Impl() {}    /**
     * Add this to support OMA DL
     * @internal
     */
    public static fin]]></description><category></category></item><item><title><![CDATA[OMA DRM 1.0之DrmService启动流程]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48660407</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48660407</guid><author>cheng20150809</author><pubDate>Tue, 22 Sep 2015 20:11:19 +0800</pubDate><description><![CDATA[1. init.rc对应文件：/system/core/rootdir/init.rc在init.rc文件中跟drm相关的部分
# create directory for DRM plug-ins - give drm the read/write access to
# the following directory. 
# 这个里面有四个文件夹IDM、id、ro、st、wv，应该跟权限相关的一]]></description><category></category></item><item><title><![CDATA[Android系统属性System Property]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48577513</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48577513</guid><author>cheng20150809</author><pubDate>Sat, 19 Sep 2015 18:53:54 +0800</pubDate><description><![CDATA[Android System Property 
一 System Property 
　　代码中大量存在：SystemProperties.set()/SystemProperties.get()；通过这两个接口可以对系统的属性进行读取/设置， 
顾名思义系统属性，肯定对整个系统全局共享。通常程序的执行以进程为单位各自相互独立，如何实现全局共享呢？ 
System Properties是怎么一回]]></description><category></category></item><item><title><![CDATA[Java中数组中的clone()方法]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48504763</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48504763</guid><author>cheng20150809</author><pubDate>Wed, 16 Sep 2015 23:11:38 +0800</pubDate><description><![CDATA[基本类型一维数组的Clone()：深拷贝
非基本类型一维数组的Clone()：浅拷贝
基本类型二维数组的Clone()：浅拷贝
非基本类型二维数组的Clone()：当然更是浅拷贝]]></description><category></category></item><item><title><![CDATA[Android序列化之Parcel]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48504113</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48504113</guid><author>cheng20150809</author><pubDate>Wed, 16 Sep 2015 22:52:21 +0800</pubDate><description><![CDATA[序列化方法在Android系统中关于序列化的方法一般有两种，分别是实现Serializable接口和Parcelable接口,其中Serializable接口是来自Java中的序列化接口，而Parcelable是Android自带的序列化接口。 
上述的两种序列化接口都有各自不同的优缺点，我们在实际使用时需根据不同情况而定。
Serializable在序列化的时候会产生大量的临时变量，从而引起频繁的]]></description><category></category></item><item><title><![CDATA[Linux中的UID，EUID，SUID]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48450531</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48450531</guid><author>cheng20150809</author><pubDate>Mon, 14 Sep 2015 23:42:47 +0800</pubDate><description><![CDATA[在做Android系统源码的时候，里面的权限管理，经常涉及到这些，可以说是Android权限机制的基础，但是理解的不透彻。先看看Linux中这几个概念。 
　　下面分别用RUID, EUID,SUID来表示实际用户ID，有效用户ID，设置用户ID。另外用户ID是个整型数，为了说明方便真接使用了用户名来代表不同的UID。先解释一下这几个ID的作用：　　RUID, 即UID，用于在系统中标识一个用户是谁]]></description><category></category></item><item><title><![CDATA[DNS消息格式]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48423001</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48423001</guid><author>cheng20150809</author><pubDate>Sun, 13 Sep 2015 23:00:28 +0800</pubDate><description><![CDATA[转载自：http://www.cnblogs.com/cobbliu/archive/2013/04/02/2996333.html
一，简介
空谈误国，要让一大堆抽象的DNS概念落地，还是需要了解DNS消息格式的，本文会尽量详细地介绍DNS消息格式的每一个字段。
也可以移步rfc1035了解。
二，概览
DNS消息主要由五部分组成，如下图所示：



Header
消息头部]]></description><category></category></item><item><title><![CDATA[Markdown使用小结]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48414121</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48414121</guid><author>cheng20150809</author><pubDate>Sun, 13 Sep 2015 11:52:07 +0800</pubDate><description><![CDATA[1、Markdown如何向中文那样实现首行缩进？


在开头的时候，先输入这个：&#160; &#160; &#160; &#160;
   然后紧跟着输入文本即可。分号也不要掉。]]></description><category></category></item><item><title><![CDATA[netfilter/iptables全攻略]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48414095</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48414095</guid><author>cheng20150809</author><pubDate>Sun, 13 Sep 2015 11:44:09 +0800</pubDate><description><![CDATA[原文地址： 
http://www.opsers.org/linux-home/videos/chapter-netfilter-iptables-raiders.html防火墙简介防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合，它能增强机构内部网络的安全性。它通过访问控制机制，确定哪些内部服务允许外部访问，以及允许哪些外部请求可以访问内部服务。它可以根据网络传输的类型决定IP包是否可以]]></description><category></category></item><item><title><![CDATA[Android JNI的动态注册]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48399103</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48399103</guid><author>cheng20150809</author><pubDate>Sat, 12 Sep 2015 21:02:46 +0800</pubDate><description><![CDATA[我们知道Androd 使用JNI的注册方法包括两个，静态注册和动态注册。 
静态注册就是通过javah命令生成.h文件，然后实现声明的函数即可，但此类函数的函数名都比较长：Java+包名+类名+方法名。而动态注册则没有这一限制。先以下面这个例子进行说明，例子中的jni函数参考了Android M源码。
我们新建一个的Android工程，包含一个默认的MainActivity。代码如下：
packag]]></description><category></category></item><item><title><![CDATA[Unix高级编程学习笔记（2）]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48355933</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48355933</guid><author>cheng20150809</author><pubDate>Fri, 11 Sep 2015 00:36:08 +0800</pubDate><description><![CDATA[Linux系统可以看成是一个由文件组成的系统，在linux系统中，基本上所有的设备，硬件，资源都被看成一个文件，比如，在/dev下面我们可以看到我们的硬盘sda1，终端设备ttyn，在/proc目录下面我们可以看到当前的内存信息，cat /proc/meminfo,可以查看CPU的信息: cat /proc/cpuinfo , 这些文件都是被linux系统抽象成了一个个的文件，通过对文件的操作来，对]]></description><category></category></item><item><title><![CDATA[Unix高级编程学习笔记（1）]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48328217</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48328217</guid><author>cheng20150809</author><pubDate>Thu, 10 Sep 2015 00:00:09 +0800</pubDate><description><![CDATA[内核（Kernel）：控制计算机硬件资源，提供程序运行环境 
系统调用（System Call）：内核的接口 
公用函数库：建立在系统调用接口之上 
**shel**l：命令行解释器输入和输入： 
1、文件描述符（File Descriptor）：一个小的非负整数，内核用它标识一个特定进程正在访问的文件。 
2、标准输入、输出、出错：当运行一个新程序是，shell为其打开三个文件描述符：stdin、]]></description><category></category></item><item><title><![CDATA[Android飞行模式下Wifi开关行为的控制]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48271331</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48271331</guid><author>cheng20150809</author><pubDate>Mon, 07 Sep 2015 19:45:47 +0800</pubDate><description><![CDATA[Android对飞行模式下Wifi和蓝牙的控制通过如下两个数据库中的值控制，airplane_mode_radios、airplane_mode_toggleable_radios，其值保存在Setting数据库Global表中/**
* A comma separated list of radios that need to be disabled when airplane mode
* is]]></description><category></category></item><item><title><![CDATA[android.content.ActivityNotFoundException: Unable to find explicit activity class错误原因排查]]></title><link>https://blog.youkuaiyun.com/cheng20150809/article/details/48271067</link><guid>https://blog.youkuaiyun.com/cheng20150809/article/details/48271067</guid><author>cheng20150809</author><pubDate>Mon, 07 Sep 2015 19:27:48 +0800</pubDate><description><![CDATA[android.content.ActivityNotFoundException: Unable to find explicit activity class {XXXX/XXX}; have you declared this activity in your AndroidManifest.xml?首先排除AndroidManifest.xml有没有声明这个Activity,  
若还有问题]]></description><category></category></item></channel></rss>