现在随着音视频的应用越来越多,直接使用系统原生相机进行拍照裁剪和拍视频,已经不能满足需求了。
需要通过Camera API进行自定义相机开发,满足一些复杂的业务场景,开篇先介绍Camera的基础知识,为后面Camera开发提供支持。
Java调用C/C++在Java语言里面本来就有的,并非Android独有的,即JNI。JNI就是Java调用C++的规范。
上一篇讲解了OKHttp,本篇来介绍下它的黄金搭档Retrofit,OKHttp+Retrofit是网络框架的不二之选。同是Square出品,和OKHttp融合起来非常简单。
Retofit是一个RESTful的HTTP网络请求框架,有以下特点:
- 基于OKHttp
- 通过注解配置网络请求参数
- 支持同步、异步请求
- 支持多种序列化、反序列化格式
- 解耦彻底、模块高度封装,使用很多设计模式来实现
前面介绍了网络的基础知识,这篇主要从OKHttp
源码角度来分析Http。
OKHttp是一个优秀的网络请求框架,有以下特点:
- 支持HTTP2/SPDY
- Socket自动选择最好路线,并支持自动重连
- 拥有自动维护的Socket连接池,减少握手次数
- 拥有队列线程池,轻松写并发
- 拥有Interceptors轻松处理请求与响应(比如透明GZIP压缩)
- 实现基于Headers的缓存策略
HTTP协议是无状态的,每次HTTP请求响应后,就会断开这次连接。如果客户端再次发送请求,服务端也不能识别出这个客户端是不是上次请求过的客户端,HTTP协议不能进行会话跟踪。而Cookie,Session,Token正是为了解决HTTP协议无状态问题。
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,在TCP/IP体系中属于最高层(应用层)是用于从万维网服务器传输超文本到本地浏览器的传送协议。
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
在Android网络编程-计算机网络基础一文中得知,IP协议属于网络层,TCP、UDP协议属于传输层。
IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。
TCP协议是面向连接的传输层协议,提供一种面向连接的、可靠的字节流服务。
UDP协议是面向无连接的传输层协议,提供面向事务的简单不可靠信息传输服务。
在Android开发过程中,网络编程是必不可少的。
大家接触的Volley
,Retrofit
,OKHttp
等网络框架,很好地封装了底层实现的细节,在使用过程中非常的方便。但是掌握其中的细节,对我们来说真的非常重要,只有掌握了网络编程的原理,才能真正理解这些网络框架的源码实现。