自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 ActivityRouter 分析

1.1 简单介绍1.2 如何在编译期就生成源文件1.1 ActivityRouter路由跳转执行流程简单介绍:ActivityRouter通过APT编译时,统计项目中使用@Modules、@Module、@Router注解的地方,通过@Module和@Router为每个模块创建了自己的路由信息。比如module1模块如下。在通过@Modules创建了RouterInit源文件,在RouterInit中调用了每一个模块路由表的静态map方法,把相应的路由加载到到内存中来,这...

2020-07-23 12:20:37 472

原创 Android OpenGL+Camera2渲染(5) —— 录制视频,实现快录慢录

Android OpenGL+Camera2渲染(1) —— OpenGL简单介绍Android OpenGL+Camera2渲染(2) —— OpenGL实现Camera2图像预览Android OpenGL+Camera2渲染(3) —— 大眼,贴纸功能实现Android OpenGL+Camera2渲染(4) —— 美颜功能实现Android OpenGL+Camera2渲染...

2020-01-04 18:06:17 3684 2

原创 Android OpenGL+Camera2渲染(4) —— 美颜功能实现

Android OpenGL+Camera2渲染(1) —— OpenGL简单介绍Android OpenGL+Camera2渲染(2) —— OpenGL实现Camera2图像预览Android OpenGL+Camera2渲染(3) —— 大眼,贴纸功能实现Android OpenGL+Camera2渲染(4) —— 美颜功能实现Android OpenGL+Camera2渲染...

2020-01-04 17:38:45 3637 1

原创 Android OpenGL+Camera2渲染(3) —— 大眼,贴纸功能实现

Android OpenGL+Camera2渲染(1) —— OpenGL简单介绍Android OpenGL+Camera2渲染(2) —— OpenGL实现Camera2图像预览Android OpenGL+Camera2渲染(3) —— 大眼,贴纸功能实现Android OpenGL+Camera2渲染(4) —— 美颜功能实现Android OpenGL+Camera2渲染...

2020-01-04 17:27:52 4917 1

原创 Android OpenGL+Camera2渲染(2) —— OpenGL实现Camera2图像预览

Android OpenGL+Camera2渲染(1) —— OpenGL简单介绍Android OpenGL+Camera2渲染(2) —— OpenGL实现Camera2图像预览Android OpenGL+Camera2渲染(3) —— 大眼,贴纸功能实现Android OpenGL+Camera2渲染(4) —— 美颜功能实现Android OpenGL+Camera2渲染...

2020-01-04 16:14:18 9784 3

原创 Android OpenGL+Camera2渲染(1) —— OpenGL简单介绍

Android OpenGL+Camera2渲染(1) —— OpenGL简单介绍Android OpenGL+Camera2渲染(2) —— OpenGL实现Camera2图像预览Android OpenGL+Camera2渲染(3) —— 大眼,贴纸功能实现Android OpenGL+Camera2渲染(4) —— 美颜功能实现Android OpenGL+Camera2渲染...

2020-01-04 15:03:24 5974

原创 Android下RTMP推流h264和aac数据

RTMP服务器搭建参考:https://blog.csdn.net/wangchao1412/article/details/103641770h264格式,aac格式,rtmppacket格式参考:https://blog.csdn.net/wangchao1412/article/details/103642403环境:RtmpDump c文件少,可以直接引入源文件,配置针对rt...

2019-12-21 12:43:45 1200

原创 h264、AAC组装RTMPPacket

h264组包结构表如下H.264数据往RTMP包中填充的是H.264数据,但不是直接将x264编码出来的数据填充进去。一段包含了N个图像的H.264裸数据,每个NAL之间由:00 00 00 01 或者 00 00 01 这四个字节或三个字节应该去掉后才可以放入RTMP数据中进行分割。在分割符之后的第一个字节,就是表示这个nal的类型。0x67:sps 0...

2019-12-21 11:22:47 618 1

原创 mac下Nginx搭建RTMP服务器

下载nginx wget wget http://nginx.org/download/nginx-1.15.3.tar.gz解压 tar xvf nginx-1.15.3.tar.gz下载nginx rtmp模块 wget https://codeload.github.com/arut/nginx-rtmp-module/tar...

2019-12-21 10:49:55 286

原创 bsdiff编译以及bspatch在android下集成与使用

bsdiff的编译网上有很多直接参考,贴一个链接,mac环境和linux环境下都写的很详细。https://blog.csdn.net/weixin_30414635/article/details/95086119在Android 平台下的使用。首先在我们从1.0到2.0版本升级,我们需要打出差分包,上传到服务器,用户登陆时根据自己的版本号去服务器下载对应的差分包,使用bspatch...

2019-12-18 10:37:05 392

原创 MediaCodec编码 音频pts设置

每一帧音频pcm录音,要进行mediacodec编码时,都需要为此pcm设置pts,在放入编码的input队列中。对于视频的pts来说,编码h264,一帧原始视频yuv420格式编码出的就是一帧h264,所以视频的pts可以直接取当前的时间戳就可以。但是对于音频来讲,一帧pcm数据,会编码出多帧的aac,mediacodec会根据送入编码器时设置的yuv420的pts,为每帧编码出的h264打一个...

2019-12-09 16:50:51 2710 7

原创 ffmpeg—视频播放器(点播和直播)

ffmpeg播放流程:1、解封装,拿到音视频信息,创建编码器。2、拿到音频Packet和视频Packet。3、解码,拿到音频Frame和视频Frame。4、对于音频原始帧,使用opensl ES进行播放。5、对于视频帧,需要 swscale库进行格式转换,转换成 ANativeWindow能够接收的数据类型RGBA_8888。6、音频视频同步。7、对于本地文件或则点播,...

2019-12-09 15:32:47 2302

原创 cmake配置ffmpeg项目

android ndk 交叉编译ffmpeg。编译好后,我们需要把静态库 lib 和头文件 include引入到Androidstudio中。引入后,我们需要编写CMakeList.txt文件cmake_minimum_required(VERSION 3.4.1)## CMAKE_SOURCE_DIR:表示cmakeList所在路径## 添加cmakeLi...

2019-12-09 11:06:58 6720

原创 Mac编译ffmpeg Android平台库

编译ffmpeg版本:ffmpeg-4.2.1ndk版本:android-ndk-r17c准备工作:一:通过brew下载wget工具。brew install wget二:下载mac os平台下的 ndk17wgethttps://dl.google.com/android/repository/android-ndk-r17c-darwin-x86_64.zip?hl=...

2019-11-25 17:33:17 568

原创 UsbManager在28版本下的改动

用UsbManager来识别外置的camera设备,授权打开的功能。授权功能 //申请USB连接权限 private synchronized void requestPermission(UsbDevice device) { //申请USB连接权限 mPermissionIntent = PendingIntent.getBroadcas...

2019-10-31 14:36:13 1302 8

原创 反射获取范型的类型

public abstract class HttpCallback<Result> implements ICallback { @Override public void onSuccess(String result) {//result就是网络回来的数据 //result把转换成用户需要的对象 Gson gson=new Gso...

2019-09-20 10:52:33 150

原创 ARouter源代码解析

上一篇文章介绍了ARouter在编译期间做的事情,会生成一些文件,Root表,Group表,AutoWired和Intercept的代表类,理解为工厂吧,链接:https://blog.csdn.net/wangchao1412/article/details/99412922所以我们在使用之前需要初始化,把Root表,Intercept拦截器和Provider加在到内存中,AutoWired...

2019-08-13 17:36:34 602

原创 ARouter源码解析之APT运行时注解

ARouter,可以使用@Route注解来标示路由地址,使用@Autowired给变量实现自动注入值,@Interceptor可以实现拦截功能。在ARouter中,首先是通过APT在编译时生成了ROOT表,Group表,Interceptor和AutoWiredAutoWired自动注入:/** * DO NOT EDIT THIS FILE!!! IT WAS GENERATED...

2019-08-13 13:40:32 644

原创 AndroidStudio下Gradle实现对配置统一管理

对SDK版本和在组建开发中对应用名进行统一管理。首先在project目录下新建一个gradle文件,如config.gradle文件如下:ext { // false: 组件模式 // true :集成模式 isModule = true android = [ compileSdkVersion: 26, ...

2019-08-13 10:27:31 464

原创 Rxjava2原理解析,手写操作符实现

RxAndroid是RxJava的一个针对Android平台的扩展,主要用于 Android 开发1 Rxjava项目地址: https://github.com/ReactiveX/Rxjava2 Rxjava文档: https://mcxiaoke.gitbooks.io/rxdocs/content/3 Rxjava经典资料:https://github.com...

2019-07-18 14:59:09 394

原创 android 事件分发机制

自己对Android时间分发机制的理解。布局文件中从外到内为FramLayout——LinearLayout——Button。当点击Button的时候,MotionEvent是这样传递的。window.dispatchTouchEvent ——phoneWindow.dispatchTouchEvent——DecordView.dispatchTouchEvent——ViewGroup.d...

2019-06-23 16:05:39 108

原创 C从源文件到可执行文件有哪些步骤

1、预处理 gcc -E main.c -o main.i 头文件解析,删除注释2、编译 gcc -S main.i -o main.s main.s为汇编语言3、汇编 gcc -c main.s -o main.o main.o为二进制文件4、链接 gcc -omain.o -o hello 代码中使用了别的库,此步进行链接执行 ./a.outIDE 执行,...

2019-06-04 22:40:29 1446

转载 Java下RAW转Bitmap

/** * Raw转Bitmap * * @author ChenRui */public class RawToBitMap { /** * 从流中读取数组 * * @param stream 输入流 * @return */ public static byte[] readByteArrayFormStream(I...

2019-05-20 14:05:05 1482 1

原创 在github上首次提交项目

git config --global user.name "这里就上图中圈着的name"git config --global user.email "这里是上图中圈着的邮箱"git initgit remote add origin 这里就是你GitLib上仓库http链接git add .git commit -m "代码提交"git push -u origin ...

2019-01-30 16:01:47 426

原创 查看/data/data下的数据库文件

1、进入adb shell 模式   adb shell2、获得所有root权限su 3、先把文件夹权限全部打开chmod 777 /data/  4、给里边的db文件权限设置成可读可写可操作chmod 777 /data/data/(项目全包名)/databases/xxx.db 5、cd命令进入db文件所在目录:    cd /data/d...

2018-12-11 14:02:19 3350

原创 EventBus查找订阅者之注解处理器

想全面了解EventBus的童鞋可以参考这里:https://blog.csdn.net/wangchao1412/article/details/84629815Subscriber Index(订阅者索引)是一个可选择的优化技术,用来加速初始化subscriber注册。通过使用EventBus annotation processor(EventBus注解处理器),订阅者索引在编译期间...

2018-11-29 20:36:32 509

原创 带你一步步参透EventBus源码

从以下几个方面来解析:1、EventBus创建方式有两种:单利和建造者模式。2、EventBus查找满足条件的订阅方法,有两种方式:反射查找和注解处理器(Annotation Processor)查找。3、EventBus如何实现订阅的(用观察者模式)。4、如何取消注册的。5、EventBus是如何切换线程处理的。6、sticky事件是如何实现的。整体思路捋清楚了,那就...

2018-11-29 16:36:56 158

原创 git从获取SSH公钥到关联仓库提交代码

当然,git环境变量肯定是要配置的,就不多说了。一获取SSH公钥1 打开终端 输入命令 cd ~/.ssh 进入.ssh文件下,如果有.ssh文件说明以前整过,没有执行下面2cd ~/.ssh2输入命令 ssh-keygen -t rsa -C "your.email" 生成公钥如果提示ssh-keygen不是内部命令,说明没有配置ssh-keygen环境变量。找到 ~/ Git\usr\bin下...

2018-05-18 14:07:23 1010

原创 XListView实现仿今日头条预加载

本篇博客是要在上拉刷新下拉加载的基础上实现预加载功能,传统的XListView都是当数据加载到最后一天数据的时候在上拉加载数据,实现预加载也就是加入一页数据是二十条,当滑动到15条数据的时候自动加载下页数据(这个当滑动到倒数几条数据在进行自动加载可以根据自己的需求来设置),下面我们就来通过OnScrollListener来实现一把。一、介绍一下OnScrollListener

2017-12-15 14:53:37 1273

原创 解决三星手机写入和读取文件失败问题

原因:三星手机的存储路径和其他oppo,vivo,华为等不一样。解决方法如下:public File saveBitmapFile(Bitmap bitmap) throws FileNotFoundException { long currentTime = Calendar.getInstance().getTimeInMillis(); String v

2017-11-09 17:02:46 4513

原创 git基本整套流程使用

一、git查看分支 查看本地:git branch -l(l:local)查看远程:git branch -r(r:remote)查看本地远程分支:git branch -a(a:all) 二、切换分支(dev分支名)如果远程和本地已经关联的话,执行git checkout dev 可同时切换本地和远程。如果没有关联,git checkout -b dev origin...

2017-11-06 13:22:43 361

原创 阿里云点播录制,上传,播放使用说明及遇到的坑

项目开发中使用阿里云的点播功能,从中遇到了一堆坑,特写此笔记。希望对使用阿里云点播的伙伴们有所帮助。一、讲解录制功能首先赋上阿里云的官方录制文档 https://help.aliyun.com/document_detail/53421.html?spm=5176.doc53407.6.680.S2RrZX在gradle文件中使用依赖的方式引用aar:compile(n

2017-10-31 10:39:11 9194 8

原创 自动截取短信验证码

现在很多app已经有了自动截取短信验证码的功能,更好的可以给用户好的体验感,以下我们就进行一点下短信的自动截取。首先应该进行一下几点:1、首先创建一个类继承自ContentObserver,类实现onChange()的方法。(onchange方法是在观察的Uri发生改变时触发)2、在activity中注册一个内容观察者3、在onDestroy方法中进行注销内容观察者

2017-01-21 18:52:59 16339 12

原创 RadioButton动态改变drawableTop的图片大小

还不知道如何改变RadioButton中drawableTop的图片大小的可以看一下,思路简代码也少很好实现的。首先说一下这些图片其实都是UI事先给咋们设计好的,基本情况不用我们去处理,直接用就可以。好,那么当我们在练习的时候,图片不合适是不能直接改变不居中RadioButton的宽高来实现的就可能用得到!下面先看一看未经过动态修改的RadioButton中图片的大小。

2016-12-29 19:55:40 4862

空空如也

空空如也

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

TA关注的人

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