自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猿诗人的博客

记录点点滴滴

  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 OkHttp3源码解析--设计模式

来看一下OkHttp3使用到的编码中的设计模式:构造者模式;工厂模式;观察者模式;单例模式;策略模式;责任链模式;享元模式;分辨说一下这些设计模式运用。构造者模式这个设计模式运用的太多了,如OkHttpClient、Request、Response、MultipartBody、HttpUrl等都是用了构造者模式,如下:public class ...

2019-04-18 20:08:25 929

原创 OkHttp3源码解析--拦截器链

前面说到的同步请求RealCall和异步请求AsyncCall,在执行execute方法时都会执行下面一句:Response response = getResponseWithInterceptorChain();这一句就是调用了拦截器链,执行了一系列操作,完成了请求访问,并将结果返回。RealCall#getResponseWithInterceptorChain代码块Java...

2019-04-18 20:08:00 210

原创 OkHttp3源码解析--拦截器RetryAndFollowUpInterceptor

看一下OkHttp内置的第一个拦截器RetryAndFollowUpInterceptor:RetryAndFollowUpInterceptorpublic final class RetryAndFollowUpInterceptor implements Interceptor {​ private static final int MAX_FOLLOW_UPS = 20; //...

2019-04-18 20:06:30 301

原创 OkHttp3源码解析--拦截器ConnectInterceptor-相关类

经过上面的缓存拦截器,如果没有获取到可用的缓存,还是需要建立Socket连接。为当前请求找到合适的连接,可能复用已有连接也可能是重新创建的连接。接下来就看一下ConnectInterceptor:ConnectInterceptorpublic final class ConnectInterceptor implements Interceptor { public final Ok...

2019-04-18 20:06:20 187

原创 OkHttp3源码解析--拦截器ConnectInterceptor-处理流程

依旧再看一下ConnectInterceptor的intercept方法:public final class ConnectInterceptor implements Interceptor { public final OkHttpClient client;//已经创建的OkHttpClient对象 //构造器中传入OkHttpClient对象 public ConnectI...

2019-04-18 20:06:10 366

原创 OkHttp3源码解析--OkHttpClient和Request创建过程

OkHttp3的分析过程将以以下代码调用过程进行://步骤1:创建OkHttpClient对象OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build();//步骤2:创建Request对象Request request = new Request.Builde...

2019-04-18 20:06:02 1732

原创 OkHttp3源码解析--拦截器CallServerInterceptor

这是做后一个拦截器,ConnectInterceptor已经连接到服务器了,接下来我们就是写入请求数据以及读出返回数据了:写入请求头写入请求体读取响应头读取响应体看一下代码:/** This is the last interceptor in the chain. It makes a network call to the server. */public f...

2019-04-18 20:05:53 257

原创 OkHttp3源码解析--拦截器CacheInterceptor

CacheInterceptor顾名思义,它是和缓存的管理和获取相关的:从缓存中匹配Request的请求响应结果,根据缓存策略,如果能找到可用的缓存,直接返回;将服务器返回的请求结果,写入到缓存中;更新现有缓存;设置缓存//缓存文件夹File cacheFile = new File(getExternalCacheDir().toString(),"cache");...

2019-04-18 20:05:43 177

原创 OkHttp3源码解析--拦截器BridgeInterceptor

桥拦截器的作用有:负责把用户构造的请求转换为发送给服务器的请求,把服务器返回的响应转换为对用户友好的响应;转换的过程就是添加一些服务端需要的header信息;在Request阶段配置用户信息,并添加一些请求头。在Response阶段,进行gzip解压。将我们创建的请求对象转成网络访问需要的请求对象,其实就是添加一些头部;然后,将网络访问对象传递出去;最后,将网络...

2019-04-18 20:05:33 154

原创 OkHttp3源码解析--Call异步请求

来看一下异步请求的源码流程,先看一下异步请求使用流程://步骤1:创建OkHttpClient对象OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build();//步骤2:创建Request对象Request request = new Request.Buil...

2019-04-18 20:05:22 664

原创 OkHttp3源码解析--Call同步请求

前面创建了Call对象,接下来就是执行。执行又分为了同步执行和异步执行,先看同步执行过程。还是之前的过程://步骤1:创建OkHttpClient对象OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build();//步骤2:创建Request对象Request...

2019-04-18 20:05:13 639

原创 OkHttp3源码解析--Call创建过程

再来看之前的过程://步骤1:创建OkHttpClient对象OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build();//步骤2:创建Request对象Request request = new Request.Builder() .url("ht...

2019-04-18 20:05:02 331

原创 OkHttp3简介与使用

OkHttp是一个非常高效的Http客户端,近年来几乎所有的Android应用都会使用它作为网络访问的框架。它有以下几个重要的特点:支持HTTP/2;支持连接复用;内部维护连接池;支持GZIP压缩,节省流量;维护缓存,提高响应效率;支持自动重连;等等同步GET请求String url = "http://wwww.baidu.com";OkHtt...

2019-04-18 20:04:53 884

原创 Android USB设备通信--读写操作

进行读写操作的前提:获取UsbDeviceConnection对象,即建立连接;正确获取到所需要的UsbInterface对象,并占用这个通信接口;正确获取到所需要的Endpoint,包括读Endpoint和写Endpoint;创建相应的数据缓存区,包括读写数据缓存区。protected byte[] mReadBuffer = new byte[DEFAULT_READ_BUFFER_...

2019-04-18 20:04:08 8693 1

原创 Android USB设备通信--连接设备

Android设备检测到USB设备插入,用户授予连接权限后,即可进行设备的连接流程。/**连接设备*/private void connectDevice(UsbDevice usbDevice){//Android标准的api,判断设备是否有连接权限if (mUsbManager.hasPermission(usbDevice)){//Android标准的API,打开设备,返回...

2019-04-18 20:03:41 2544 2

原创 Android USB设备通信--插拔监测

电子秤和读卡器都可以通过usb口和pos通信。设备插拔,系统广播插入或者拔出usb设备时,Android系统都会发出广播,我们可以通过广播监听者BrocastReceiver监听相应的广播,进行相应的初始化或者资源释放。共有三种广播:设备插入广播设备授权广播设备播出广播public class UsbDeviceHelper extends BroadcastReceiver {//...

2019-04-18 20:03:31 1908

原创 H264视频传输、编解码----FFmpeg软解码

记录一下之前项目的实际使用过程。 将按照Java层——>JNI接口——>JNI代码中使用FFmpeg解码。 首先Java层:public class CodecWrapper {//加载FFmpeg的动态so库 static { System.loadLibrary("codec"); System.loadLibrary("avutil-55

2019-04-18 20:00:49 2499 2

原创 H264视频传输、编解码----MediaCodec硬解码

public class RtspDecoder { private static final String TAG = RtspDecoder.class.getSimpleName(); //处理音视频的编解码的类MediaCodec private MediaCodec video_decoder; //显示画面的Surface private S...

2019-04-18 20:00:21 2415

原创 H264视频传输、编解码----RTP/RTCP/RTSP协议数据传输基于UDP or TCP

用一句简单的话总结:RTSP发起/终结控制流媒体、RTP传输流媒体数据、RTCP对RTP数据进行控制,同步。一般情况下,RTSP协议采用TCP协议传输控制流媒体的指令,RTP/RTCP协议采用UDP方式传输控制指令。但是有时候RTSP协议数据也可以使用UDP,或者RTP/RTCP也可以使用TCP;1、RTSP协议采用TCP协议传输控制流媒体的指令,RTP/RTCP协议采用UDP方式传输控...

2019-04-18 19:59:37 2767

转载 H264视频传输、编解码----RTSP认证

Rtsp认证主要分为两种:基本认证(basicauthentication)和摘要认证(digestauthentication )。基本认证是http 1.0提出的认证方案,其消息传输不经过加密转换因此存在严重的安全隐患。摘要认证是http 1.1提出的基本认证的替代方案,其消息经过MD5哈希转换因此具有更高的安全性。下面主要介绍摘要认证:1.基本认...

2019-04-18 19:59:19 1598

原创 H264视频传输、编解码----RTP/RTCP协议

RTSP对流媒体提供了控制方法,使得实时流数据变得可控。但是它并不负责实时流数据的传输。实时流数据的传输和传输过程的同步、优化由RTP/RTCP来负责。实时传输协议RTP( Real-time Transport Protocol)和实时传输控制协议(Real-timeControlProtocol,RTCP),在RTP会话期间,每个会话参与者周期性地向所有其他参与者发送RTCP控制信息包,...

2019-04-18 19:58:48 1197

flv_tag.docx

FLV tag格式的表格呈现。包括Video tag,Audio tag,Script Tag等。格式,字段,字段长度等。供学习flv格式的开发者。

2019-12-27

flvData.FLV

Flv文件,可以再NotePad++上面查看里面的数据格式。分析里面的Video Tag,Audio Tag,Script Tag等。作为学习flv格式的重要文件。

2019-12-26

空空如也

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

TA关注的人

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