<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[newhand1的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/newhand1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; newhand1]]></copyright><item><title><![CDATA[Android常见的几种YUV格式包括NV21、NV12、YV12和YUV420P等]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/129988199</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/129988199</guid><author>newhand1</author><pubDate>Thu, 06 Apr 2023 14:12:46 +0800</pubDate><description><![CDATA[NV21转NV12。]]></description><category></category></item><item><title><![CDATA[过滤汉字和特殊字符的正则表达式]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/124267492</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/124267492</guid><author>newhand1</author><pubDate>Tue, 19 Apr 2022 10:30:00 +0800</pubDate><description><![CDATA[public static String filterIllegalCharacters(String str) {
        Pattern pattern = Pattern.compile("[^\\s\\x4e00-\\u9fa5a-zA-Z0-9_-]");
        Matcher matcher = pattern.matcher(str);
        StringBuffer buffer = new StringBuffer();
        while (...]]></description><category></category></item><item><title><![CDATA[Android 反射获取控件]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/123743494</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/123743494</guid><author>newhand1</author><pubDate>Fri, 25 Mar 2022 19:27:36 +0800</pubDate><description><![CDATA[ProgressDialog mBootMsgDialog = new ProgressDialog(mContext);
try {
    Field file = ProgressDialog.class.getDeclaredField("mMessageView"); // 通过反射获取item_tv对象
    file.setAccessible(true); //私有变量需要使用此方法
    TextView textView = (TextView) file.get(mBootMsg.]]></description><category></category></item><item><title><![CDATA[android静默卸载与在6.0上的异常]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/114302473</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/114302473</guid><author>newhand1</author><pubDate>Wed, 03 Mar 2021 11:36:19 +0800</pubDate><description><![CDATA[1. 静默应用卸载方式

我们在进行应用卸载的时候，有种使用shell命令的方式进行静默卸载，不起界面，此种方式也可以适用于其他的命令


//代码本质是一种在android代码中使用ProcessBuilder，非常规调用shell命令的方式
String[] args = {
   "pm", "uninstall", packageName
};//这个是shell命令中卸载的命令，也可以是其他的命令

String result = null;
ProcessBuilder processBu...]]></description><category></category></item><item><title><![CDATA[runnable与Thread的区别]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/100693203</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/100693203</guid><author>newhand1</author><pubDate>Tue, 10 Sep 2019 11:19:39 +0800</pubDate><description><![CDATA[新建一个线程一般有两个方法，一个是新建一个类，继承自Thread，里面重写run；另一个是新建一个Thread对象，new Thread的时候传入一个Runnable参数，其中Runnable需要重写run。

为什么需要定一个类去实现Runnable接口呢？继承Thread类和实现Runnable接口有啥区别呢？

实现Runnable接口，避免了继承Thread类的单继承局限性。覆盖Runna...]]></description><category></category></item><item><title><![CDATA[getLayoutPosition与getAdapterPosition区别详解]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/86610809</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/86610809</guid><author>newhand1</author><pubDate>Wed, 23 Jan 2019 15:39:57 +0800</pubDate><description><![CDATA[当我们在使用RecyclerView的getLayoutPosition与getAdapterPosition时

具体区别就是adapter和layout的位置会有时间差(&amp;lt;16ms), 如果你改变了Adapter的数据然后刷新视图, layout需要过一段时间才会更新视图, 在这段时间里面, 这两个方法返回的position会不一样.

 我在使用mList.remove(pos);no...]]></description><category></category></item><item><title><![CDATA[CallSetting分析]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/85004713</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/85004713</guid><author>newhand1</author><pubDate>Mon, 17 Dec 2018 11:04:45 +0800</pubDate><description><![CDATA[

 通话设置应用的入口在CallFeatureSetting.java类中，
package com.android.phone可以看出通话设置在Phone进程中
 @Override
//点击事件发生后调用的函数，不用注册监听器
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Prefere...]]></description><category></category></item><item><title><![CDATA[android源码基础——Preference认识]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/85000178</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/85000178</guid><author>newhand1</author><pubDate>Fri, 14 Dec 2018 11:33:30 +0800</pubDate><description><![CDATA[
对于阅读android源码来说，其于android移动开发不同，不会使用很多的view控件，在xml文件中，使用最多的是preference控件，所以在看源码之前，我们需要了解一些关于preference的知识，网上关于这个的讲解很多，下面是两篇比较详细的。

来自CrazyMo_的Android进阶——Preference详解之初识Preference及Preference系（一）


htt...]]></description><category></category></item><item><title><![CDATA[呼叫转移流程（二）]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/84826972</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/84826972</guid><author>newhand1</author><pubDate>Wed, 05 Dec 2018 11:49:17 +0800</pubDate><description><![CDATA[下面为RIL工作框图：



 

 

呼叫转移中对RIL层返回的response,具体流程图如下



 

1. GsmCdmaPhone

一般向RIL请求request的类中含有对应的handleMessage方法会对RIL返回的response做出回应



       case EVENT_GET_CALL_FORWARD_DONE:
                ar = (A...]]></description><category></category></item><item><title><![CDATA[呼叫转移流程分析（一）]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/84818205</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/84818205</guid><author>newhand1</author><pubDate>Wed, 05 Dec 2018 09:38:01 +0800</pubDate><description><![CDATA[Android5.0之后的版本，手机的CallSetting设置一般在package/apps/service/Telephony中

下面为呼叫转移流程图，包括应用层与RIL的request



 1.CallFeartureSettingActivity.java为通话设置入口

//在谷歌的源码中没有这个类，可以直接看2、CallFeatureSetting

在onResume方法中判断...]]></description><category></category></item><item><title><![CDATA[解决离线下缺少libssl-dev问题]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/82760401</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/82760401</guid><author>newhand1</author><pubDate>Tue, 18 Sep 2018 17:06:59 +0800</pubDate><description><![CDATA[在进行工程编译过程中遇到以下问题



网上找了解决办法，很简单，因为缺少libssl-dev内核，所以装上就行了

sudo  apt-get  install  libssl-dev

有时候会出现安装失败的情况

可以先执行

sudo  apt-get  update然后执行sudo  apt-get  install  libssl-dev

但这是在你linux能连接外网的情况下的解决...]]></description><category></category></item><item><title><![CDATA[误操作下的dev/sda1空间满载问题]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/82752029</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/82752029</guid><author>newhand1</author><pubDate>Tue, 18 Sep 2018 09:28:41 +0800</pubDate><description><![CDATA[本人是在进行工程下载时忘记cd到应该存放工程的目录下，直接在root目录下进行了下载，所以工程下到一半提示空间不足

使用df  –h;

命令显示dev/sda1总共35g空间，已使用100%

本想直接cd大sda1下删除，却显示没有这个目录，后来知道sda1是一个文件，不是一个文件夹

接下来介绍本人方法：

使用du –h –max-depth=1;

命令，可以看到当前文件夹下的各文件夹...]]></description><category></category></item><item><title><![CDATA[工作第一弹，认识git]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/82465366</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/82465366</guid><author>newhand1</author><pubDate>Thu, 06 Sep 2018 18:35:33 +0800</pubDate><description><![CDATA[GIT是一种版本控制软件，版本控制系统是一种记录一个或若干个内容变化，以便将来查询特定版本修订情况的系统。客户端并不只提取最新版本的文件快照，而是把原始的代码仓库完整地镜像下来。服务起发生故障都可以从本地节点恢复数据。因为每一次的提取操作，实际上都是一次对代码仓库的完整备份。

 repo是Android为了方便管理多个git库而开发的Python脚本。repo的出现，并非为了取代git，而是为了...]]></description><category></category></item><item><title><![CDATA[二叉树的遍历]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/77170814</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/77170814</guid><author>newhand1</author><pubDate>Mon, 14 Aug 2017 22:26:49 +0800</pubDate><description><![CDATA[/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/

class TreeToSequence {
public:
]]></description><category></category></item><item><title><![CDATA[关于KMP算法的理解]]></title><link>https://blog.youkuaiyun.com/newhand1/article/details/77036899</link><guid>https://blog.youkuaiyun.com/newhand1/article/details/77036899</guid><author>newhand1</author><pubDate>Thu, 10 Aug 2017 10:23:21 +0800</pubDate><description><![CDATA[关于KMP算法的理解我是参考阮先生的解释
http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html




 vector pattern;//这是要小的整形串
        vector str;//这是大的整形串

        if (str.size()
            ]]></description><category></category></item></channel></rss>