<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[trinity2015的博客]]></title><description><![CDATA[老码农]]></description><link>https://blog.youkuaiyun.com/trinity2015</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; trinity2015]]></copyright><item><title><![CDATA[ffplay源码分析1]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/117204105</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/117204105</guid><author>trinity2015</author><pubDate>Mon, 24 May 2021 00:57:03 +0800</pubDate><description><![CDATA[ffplay源码分析
-------------------------------------------------------------------音视频同步部分
1、音视频同步 main-&gt;  event_loop-&gt;  refresh_loop_wait_event-&gt; video_refresh
主函数里面，event_loop阻塞等待GUI操作发来的事件，在阻塞里面会有wait方法，再调用video_refresh进行音视频同步，并显示视频帧。
static void vi]]></description><category></category></item><item><title><![CDATA[ffplay源码分析]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/117197556</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/117197556</guid><author>trinity2015</author><pubDate>Sun, 23 May 2021 17:12:10 +0800</pubDate><description><![CDATA[ffplay源码分析
-------------------------------------------------------------------解码部分
4.4版本的源码简要分析，不会深究细节，仅以流程和原理为主，做为学习和记录之用，希望能在音视频领域有所成就。ffplay在windows平台，使用sdl显示渲染， 其余解码同步等流程基本一致，ffplay.c总计3000多行，不算太多，以本人有限的C语言功力，尝试解读一把。
入口函数 Main 的重要函数
int main(int argc, ]]></description><category></category></item><item><title><![CDATA[android 版本特性摘要]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/82535131</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/82535131</guid><author>trinity2015</author><pubDate>Sun, 09 Sep 2018 01:35:49 +0800</pubDate><description><![CDATA[Android KitKat

全屏沉浸模式 
RenderScript Compute  单CPU，无法调试 
安全增强功能 SELinux（强制模式） 改进加密算法   Https证书改变





Android Lollipop

1.ART 运行时上独占运行，这个全新开发的运行时支持混合使用预先编译 (AOT) 代码、即时编译 (JIT) 代码和解释代码。它支持 ARM、x86 和 MI...]]></description><category></category></item><item><title><![CDATA[Android AOP(三)：在Android中Javassist动态编译代码]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/80822977</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/80822977</guid><author>trinity2015</author><pubDate>Wed, 27 Jun 2018 00:22:19 +0800</pubDate><description><![CDATA[Android AOP(三)：在Android中Plugin Transform Javassist操作Class文件


  Javassist作用是在编译器间修改class文件，与之相似的ASM（热修复框架女娲）也有这个功能，可以让我们直接修改编译后的class二进制代码，首先我们得知道什么时候编译完成，并且我们要赶在class文件被转化为dex文件之前去修改。在Transfrom这个api出...]]></description><category></category></item><item><title><![CDATA[Android AOP(二)：AspectJ在Android中实现Aop]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/80739580</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/80739580</guid><author>trinity2015</author><pubDate>Tue, 19 Jun 2018 21:54:56 +0800</pubDate><description><![CDATA[AspectJ


  AspectJ实际上是对AOP编程思想的一个实践，当然，除了AspectJ以外，还有很多其它的AOP实现，例如ASMDex，但目前最好、最方便的，依然是AspectJ。


AOP的用处非常广，从Spring到Android，各个地方都有使用，特别是在后端，Spring中已经使用的非常方便了，而且功能非常强大，但是在Android中，AspectJ的实现是略阉割的版本，并不...]]></description><category></category></item><item><title><![CDATA[Android AOP(一)：APT Annotation Processing Tool 注解处理器]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/80646582</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/80646582</guid><author>trinity2015</author><pubDate>Mon, 11 Jun 2018 00:52:30 +0800</pubDate><description><![CDATA[介绍


  APT(Annotation Processing Tool)即注解处理器，是一种处理注解的工具，确切的说它是javac的一个工具，它用来在编译时扫描和处理注解。注解处理器以Java代码(或者编译过的字节码)作为输入，生成.java文件作为输出。 
  简单来说就是在编译期，通过注解生成.java文件。


优点 
使用APT的优点就是方便、简单，可以少些很多重复的代码。 
用过Bu...]]></description><category></category></item><item><title><![CDATA[Realm 数据库笔记（一）]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/80423999</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/80423999</guid><author>trinity2015</author><pubDate>Wed, 23 May 2018 18:13:25 +0800</pubDate><description><![CDATA[Realm 数据库

ORMlite，greenDao这些框架都是在SQLite的基础上封装的ORM对象关系映射框架，简化了代码操作。 
而今天的主角：Realm是一个可以替代SQLite以及ORM Libraries的轻量级数据库。 
相比SQLite，Realm更快并且具有很多现代数据库的特性，比如支持JSON，流式api，数据变更通知，以及加密支持，这些都为安卓开发者带来了方便。不多介绍，更...]]></description><category></category></item><item><title><![CDATA[SAX解析xml characters方法要注意的问题]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/80150355</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/80150355</guid><author>trinity2015</author><pubDate>Mon, 30 Apr 2018 16:52:47 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/shihua2010/article/details/52290344]]></description><category></category></item><item><title><![CDATA[How to connect adb wifi?]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/80145537</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/80145537</guid><author>trinity2015</author><pubDate>Sun, 29 Apr 2018 21:14:44 +0800</pubDate><description><![CDATA[1、File-Settings-Plugins-Borwse Resportories  搜索ADB WIFI,  然后Install 安装，重启AndroidStudio2 设置调试模式Run/Debug Configurations3 手机打开 USB 调试模式后，用数据线将其连接至电脑，点击 ADB USB to WIFI 左下角出现----在Terminal窗口中输入：adb connec...]]></description><category></category></item><item><title><![CDATA[ComposeMessageFragment源码分析]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/78607537</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/78607537</guid><author>trinity2015</author><pubDate>Wed, 06 Dec 2017 16:47:34 +0800</pubDate><description><![CDATA[ComposeMessageFragment源码分析ComposeMessageFragment源码分析
基本情况
源码分析
生命周期
onAttach
onCreate
onCreateView
onActivityCreated
onStart
onResume
onwindowfocuschange
监听器及事件方法说明
事件方法说明
基本情况ComposeMessageFragment 是用]]></description><category></category></item><item><title><![CDATA[算法 排序算法]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/77894866</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/77894866</guid><author>trinity2015</author><pubDate>Fri, 08 Sep 2017 14:58:26 +0800</pubDate><description><![CDATA[算法 排序算法　　我们通常所说的排序算法往往指的是内部排序算法，即数据记录在内存中进行排序。　　排序算法大体可分为两种： 
　　一种是比较排序，时间复杂度O(nlogn) ~ O(n^2)，主要有：冒泡排序，选择排序，插入排序，归并排序，堆排序，快速排序等。 
       另一种是非比较排序，时间复杂度可以达到O(n)，主要有：计数排序，基数排序，桶排序等。 
       冒泡排序冒泡排序是一种]]></description><category></category></item><item><title><![CDATA[android 使用ffmpeg音视频播放（二）]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/77749812</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/77749812</guid><author>trinity2015</author><pubDate>Thu, 31 Aug 2017 17:06:55 +0800</pubDate><description><![CDATA[上篇是视频解码播放，这篇讲音频解码播放，解码过程同视频解码，不过取的是音频流，android播放用的audiotracker，因为实现简单。
编写Android代码因为是audiotracker播放，在代理类里除了编写native方法，还要提供给c调用的返回audiotracker的设定采样率和声道的createAudioTrack（）。public class YoungPlayer {    p]]></description><category></category></item><item><title><![CDATA[android 使用ffmpeg音视频播放（一）]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/77732322</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/77732322</guid><author>trinity2015</author><pubDate>Thu, 31 Aug 2017 09:12:31 +0800</pubDate><description><![CDATA[http://download.youkuaiyun.com/download/trinity2015/9958381>从这篇开始进入深水期，编译C/C++库，配NDK，编写native，编译APP，真累，全是坑。这篇的主要内容是讲ffmpeg解码视频文件并在android上显示播放。编译ffmpeg参照FFmpeg的Android平台移植—编译篇，编译需要注意的地方是版本、脚本的编写、对库的裁剪。编写Andr]]></description><category></category></item><item><title><![CDATA[android Java开发设计模式及在android中的应用解析]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/77692442</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/77692442</guid><author>trinity2015</author><pubDate>Wed, 30 Aug 2017 00:59:46 +0800</pubDate><description><![CDATA[android Java开发设计模式及在android中的应用解析目录android Java开发设计模式及在android中的应用解析目录
什么是设计模式
设计模式的六大原则
部分Java设计模式在android中的使用
1单例模式
2Builder建造者模式
简单实现
3工厂方法模式
简单实现
4策略模式
简单实现
5责任链模式
简单实现
Android源码中的责任链模式
6观察者模式
简单实现]]></description><category></category></item><item><title><![CDATA[android Java多线程的使用解析]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/75453371</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/75453371</guid><author>trinity2015</author><pubDate>Thu, 20 Jul 2017 01:25:35 +0800</pubDate><description><![CDATA[常见概念
多线程：指的是这个程序（一个进程）运行时产生了不止一个线程。 
并行与并发： 
并行：多个cpu实例或者多台机器同时执行一段处理逻辑，是真正的同时。
并发：通过cpu调度算法，让用户看上去同时执行，实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的资源，那么针对这个公用的资源往往产生瓶颈，我们会用TPS或者QPS来反应这个系统的处理能力。
线程安全：经常用来描绘一段代码。指在并]]></description><category></category></item><item><title><![CDATA[android 自定义控件的几种形式]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/75000754</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/75000754</guid><author>trinity2015</author><pubDate>Wed, 12 Jul 2017 00:51:39 +0800</pubDate><description><![CDATA[简单来说自定义控件就是继承自android api里的view 或者 viewgroup及其子类，根据需要重写相关方法来实现满足自定义显示和交互的控件。
  如果说要按类型来划分的话，自定义View的实现方式大概可以分为三种，自绘控件、组合控件、以及继承控件。
一、自绘控件1.自定义View自定义View我们大部分时候只需重写两个函数：onMeasure()、onDraw()。onMeasure负责]]></description><category></category></item><item><title><![CDATA[android Universal-Image-Loader 使用及解析]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/74783385</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/74783385</guid><author>trinity2015</author><pubDate>Sat, 08 Jul 2017 01:58:34 +0800</pubDate><description><![CDATA[如果说评价一下哪个图片开源库最被广泛使用的话，我想应该可以说是Universal-Image-Loader，在主流的应用中如果你随便去反编译几个，基本都能看到他的身影，它就像个图片加载守护者，默默的守护着图片加载。相信很多人对这个异步加载图片框架还不是很熟，再加上最近它更改优化了好几个地方，而网上的大部分资料还是以前的，于是花了几天时间专门的研究了下开源框架Universal-Image-Loade]]></description><category></category></item><item><title><![CDATA[android 广播机制]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/74568799</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/74568799</guid><author>trinity2015</author><pubDate>Thu, 06 Jul 2017 16:54:49 +0800</pubDate><description><![CDATA[转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html




1.Android广播机制概述

Android广播分为两个方面：广播发送者和广播接收者，通常情况下，BroadcastReceiver指的就是广播接收者（广播接收器）。广播作为Android组件间的通信方式，可以使用的场景如下：
1.同一app内部的同一组件内的消息通]]></description><category></category></item><item><title><![CDATA[android 事件传递机制]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/74452709</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/74452709</guid><author>trinity2015</author><pubDate>Wed, 05 Jul 2017 16:02:45 +0800</pubDate><description><![CDATA[与touch事件相关的3个方法:public boolean dispatchTouchEvent(MotionEvent ev);    //用来分派event 
public boolean onInterceptTouchEvent(MotionEvent ev); //用来拦截event 
public boolean onTouchEvent(MotionEvent ev);]]></description><category></category></item><item><title><![CDATA[android service 生命周期及场景]]></title><link>https://blog.youkuaiyun.com/trinity2015/article/details/74331830</link><guid>https://blog.youkuaiyun.com/trinity2015/article/details/74331830</guid><author>trinity2015</author><pubDate>Tue, 04 Jul 2017 15:56:39 +0800</pubDate><description><![CDATA[android service 生命周期及场景Service作为android四大组件之一，在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑，或者去执行某些需要长期运行的任务。必要的时候我们甚至可以在程序退出的情况下，让Service在后台继续保持运行状态。使用Service可以在后台执行长时间的操作（ perform long-running operations in]]></description><category></category></item></channel></rss>