- 博客(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
flvData.FLV
2019-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人