自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mac使用Bundletool工具遇到的问题

Google Play要求8月1日前,所有应用都必须提供64位的支持,所以很多开发人员应该对上架在Google play的应用进行了改造,并且接入了google 提供的Android App Bundle。官方AAB的介绍https://blog.csdn.net/jILRvRTrc/article/details/83067202从而实现在增加了多种架构的so库支持的同时,不会增大太...

2019-07-12 15:16:35 3311 1

原创 Android 8.0出现的java.lang.IndexOutOfBoundsException: setSpan (-1 … -1) starts before 0

在我们应用的线上反馈中,收集到了一些如下到crash。只出现在Android 8.0的手机中。并没有找到任何其他有用的错误信息。Exception: java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0 at android.text.SpannableStringBuilder.che...

2018-09-25 14:24:25 6923 4

原创 Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等

前言     这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理。比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何单声道和双声道互转,还有就是如果把两个音频文件合并为一个音频文件(音频混音),以及如何调节音频的原始大小。那这些功能的运用场景做哪里呢?比如如果我们想给视频文件增加要给bgm,那如果保留原...

2017-11-20 21:17:32 9109 18

原创 Android视频编辑器(四)通过OpenGL给视频增加不同滤镜效果

前言       在上面的几篇文章中,我们实现了录制视频、通过opengl在录制过程中和给本地视频添加水印和美颜效果,还没看过的童鞋,可以看该系列的前面三篇文章。而这篇博客,我们来实现给视频添加各种各样的滤镜。现如今给视频加各种不同的滤镜对各视频类app来说,已经是标配功能。而添加各类滤镜可以使我们拍摄的视频更美观漂亮。所以这篇博客,我们就要来实现给视频添加上除美颜之外的其他滤镜。

2017-10-30 19:38:10 16314 12

原创 Android视频编辑器(三)给本地视频加水印和美颜滤镜

前言         在上两篇文章中,我们分别实现了通过OpenGL预览、录制视频,以及在预览和录制的时候加上视频水印和美白效果,而作为一个视频编辑器,当然不仅仅是录制视频,也会有从本地选择视频,然后加上视频水印、美白、滤镜等效果,再进行发布的需求。所以作为系列文章的第三篇,我们就来实现如何给本地视频加上视频水印和美颜效果。       本系列的文章包括如下:

2017-10-18 16:56:59 22965 22

原创 Android视频编辑器(二)预览、录制视频加上水印和美白磨皮效果

前言这是视频编辑器系列的第二篇文章,在上篇文章中,我们讲解了利用OpenGl和SurfaceView进行视频预览,MediaCodec和MeidaMuxer进行视频录制和断点续录。而这篇主要会讲解一下如何在预览和录制视频的时候,利用OpenGL加上水印和美白磨皮的效果。如今的各种拍照、录制视频类的APP,如果没有美白磨皮的功能,那基本上是没有市场的了。然后,因为最近太忙,导致已经过去这么久才更

2017-10-12 14:40:54 16894 20

原创 Android视频编辑器(一)通过OpenGL预览、录制视频以及断点续录等

前言如今的视频类app可谓是如日中天,火的不行。比如美拍、快手、VUE、火山小视频、抖音小视频等等。而这类视频的最基础和核心的功能就是视频录制和视频编辑功能。包括了手机视频录制、美白、加滤镜、加水印、给本地视频美白、加水印、加滤镜、视频裁剪、视频拼接和加bgm等等一系列音视频的核心操作。而本系列的文章,就是作者在视频编辑器开发上的一些个人心得,希望能帮助到大家,另外因个人水平有限,难免有不足之

2017-08-19 09:31:16 15740 26

原创 算法(八)最短路径之Bellman-Ford算法的队列优化以及几种最短路径算法对比

前言从上篇博客的,Bellman-Ford算法介绍的最后一部分,我们指出,其实,可以对该算法进行进一步的优化。原因是因为:其实在每一轮松弛操作结束后,就会有一些顶点已经求得其最短路径。此后这些顶点的最短路径的估计值就会一直保持不变,但是每一次都还要对其进行判断。这里浪费了时间,这就启发了我们每次仅对最短路估计值发生了变化的顶点的所有出边执行松弛操作。所以下面我们学习Bellman-Ford算法的队...

2017-07-31 20:12:54 621 1

原创 算法(七)最短路径之Bellman-Ford算法

前言            前面两篇文章,我们分别学习了Floyed-Warshall和Dijkstra算法。还有印象吗?这篇文章我们就来学习一下另一种最短路径的算法,Bellman-Ford算法和一些邻接表的知识。在上篇文章中学习的Dijkstra算法的时间复杂度是O(N*N),那有没有什么可以优化速度的方法呢?首先,这篇文章就先学习一下 通过邻接表来优化Dijkstra算法,然后再学习一下Be...

2017-07-16 17:18:15 639

原创 android使用CMake进行jni编写遇到的一些问题

前言         android studio 2.2之后出的CMake 让jni的编写方便了很多,使用CMake让我们不在烦恼函数的定义,以前我们需要通过javah命令生成,jni规定的函数名,现在不需要了。他也让我们可以很方便的编写c/c++代码,自动打成so。总体来说,让我们的jni编写变得更简单。但是网上关于CMake的使用翻来覆去也就是官网的那些。所以我就记录一下自己在使用CMa

2017-05-27 13:59:19 9543 3

原创 算法(六)最短路径之Dijkstra算法

前言在上一篇博客中,我们学习了最短路径系列的第一种算法Floyd-Warshall算法来求解图中点与点之间的最短路径的问题。这篇博客我们就要来学习一下,求解单源最短路径的一种算法:Dijkstra算法。具体问题还是几个城市间的最短路径问题,这次我们需要求的是1号顶点到其余个点的最短路径。路径图如下现在我们需要求解1号点到2、3、4、5、6号点的最短路径。Dijkstra算法          图的...

2017-05-16 19:19:04 575

原创 算法(五)最短路径之Floyed-Warshall算法

前言算法中的最短路径问题,是一个经典的算法问题。旨在寻找图(由顶点和边组成)中顶点到顶点间的最短路径。而我们接下来的几篇文章就会一起学习最短路径问题中常用的Floyed-Warshall、Dijkstra、Bellman-Ford以及Bellman-Ford的队列优化这四种算法。这些最短路径的算法在实际运用中也有不可忽视的作用。接下来,我们就来学习一下Floyed-Warshall算法。具体问题在...

2017-05-16 14:53:06 1000

原创 算法(四)搜索算法(二)(广度优先搜索)

前言在上一篇博客中,我们学习了搜索算法的第一种:深度优先搜索,这篇博客就让我们一起来学习另一种大家都经常听见的搜索算法:广度优先搜索。看名字就知道,他们两者之间肯定有什么不可告人的秘密。广度优先搜索,又叫宽度优先搜索,英文名:Breadth First Search。属于一种盲目搜寻方法,目的是系统的展开并且搜索图中所有的点,以找寻结果。我们还是以上篇博客后面提到的那个迷宫地图的问题来详细介绍一下...

2017-05-03 17:13:57 912

原创 算法(三)搜索算法(一)(深度优先搜索)之地图迷宫

前言前面两篇文章,只是讲了一下算法的入门,排序算法和枚举算法,大家是不是觉得很简单呢?那么这篇文章,我们就有学习一下,稍微有点难度的,也是面试、笔试经常见到的深度优先搜索。而常见的搜索算法就有,上篇文章中所介绍的穷举算法、以及本篇将要介绍的深度优先搜索,以及暂时不会介绍的A*算法、回溯算法、混沌搜索等,当然最高深的搜索算法,就是百度和google的看家本领了。那就不是我们现在能够理解的范围了,他们...

2017-04-24 17:57:33 1091

原创 算法(二)枚举算法(穷举法)之火柴棍等式

前言这是本系列的第二篇文章,从名字就可以看出,将要学习穷举算法,也叫枚举法,噫,有同学可能就要问了,穷举也算算法吗?当然算啦,别拿豆包不当干粮,拿乞丐不当江湖中人,事实上,江湖上很多鼎鼎有名的高手,就来自于天下第一大帮,丐帮。所以,枚举其实也是一种算法思想。现在我们就来学习神功的第二层,枚举算法实际需求也就是火柴等式,比如 1 + 1 = 2,其中1是两根,+号是两根,=号是两根,2是5根火柴。那...

2017-04-23 15:04:07 1512

原创 算法(一)排序算法(桶排序、冒泡排序、快速排序)

前言这些一个系列的文章,主要是自己学习算法和数据结构的一些笔记整理。从最简单开始,一步步深入,都是自己学习过程中的领悟。对于程序猿而言,算法和数据结构就像一门强大的内功,练的过程中,会比较难,相对于武学招式,需要更多的理解能力和悟性,但是一旦练成,那就能变身强大的武林高手,纵横武林,不再是梦想。本系列武林秘籍主要来自于个人学习《啊哈!算法》《算法导论》这两个算法的入门级书籍。所以,高手就不喜勿喷啦...

2017-04-07 18:43:32 5999 3

原创 SurfaceView的nativeUnlockCanvasAndPost 导致的没有任何错误信息的IllegalArgumentException

最近项目里面使用到了surfaceView,在子线程中进行页面绘制,但是出现了一个莫名其妙的bug,该Exception,没有什么信息,无从判断是什么原因导致的">所以,需要我们去看看为什么会导致这样的问题,我们的代码是如下 if (mSurfaceHolder != null) { mCanvas = mSurfaceHolder.loc

2017-03-17 11:32:45 6137

原创 由FragmentTabHost导致的Can not perform this action after onSaveInstanceState异常

这是开发中,用户反馈很多的一个exception。主要是Fragment的commit和commitAllowingStateLoss的问题,出现这种问题的原因很多,本次主要因为FragmentTabHost导致的该bug的发生">完全没有,我们应用的我们熟悉的那些类的堆栈信息">    是不是,有种无从下手的感觉,因为没有我们自己写的类的信息,那我们需要从异常发生的地方,

2017-03-16 19:22:01 5751 8

原创 okhttp、okio添加参数(addParams)出现的java.lang.IllegalArgumentException:Unexpected code point

这是我们项目,收集到的,用户出现过不少次的一个问题。根据堆栈发现是出现在用户修改自己的个人资料时出现的。项目的网络框架用的是okhttp,在bugly上的样子如下图">查看堆栈信息,找到抛出这个异常的地方,在okhttp的okio这个jar包的Buffer类中,的writeUtf8CodePoint()这个方法中">Buffer类的源码如下@Override publi

2017-02-24 15:26:17 6681 2

原创 Android的自定义View深入解析

前言自定义View是每个Android开发人员,都必备的技能。当SDK提供的常规控件如TextView、Button等没法满足我们日常开发需求时候,就需要我们进行View的自定义。本文就从View的绘制过程、自定义View的分类、自定义View的自定义属性、Canvas的简单使用、View的事件分发体系、View的滑动冲突等几个方面,简单讲解一下,如何自定义一个我们想要的View。

2017-02-23 19:06:21 539

原创 Android的Handler部分原理的解析

前言Handler是Android应用开发中最常用的线程间通信类,在Android应用开发甚至整个应用的运行中都有非常重要的重要。所以理解Handler的实现原理,是很有必要的一件事情。本文,会从Handler、Looper、MessageQueue等关键类的源码,分析Handler的主要原理。一、Android的消息机制HandlerAndroid的消息机制主要是指H

2017-01-18 15:30:59 308

原创 Android的动画理解与深入

在android开发中,动画能让我们做出各种各样酷炫的效果,然而,你真的懂动画吗?为什么有三种动画的分类?他们的实现原理是怎么样的?我们怎么样才能做出绚丽的动画效果?动画使用中有什么值得注意的地方?本文,就将进行以上问题的一些探讨。一、Android的动画的分类我们都知道Android的动画分成三种,补间动画(View Animation)、帧动画(Frame)、属性动画(Prop

2016-12-25 10:25:23 390

原创 Android中常见的内存泄露分析

前言Android应用因为本身可用内存的限制,需要特别重视内存泄露的问题,本文总结了Android中常见的一些内存泄露原因及避免方式。一、单例造成的内存泄露由于单例的静态特性使得单例的生命周期和应用的生命周期一样长,这说明,如果一个对象已经不需要使用了,而单例对象还持有该对象的引用,那么该对象将不能被正常回收,这就导致了内存泄露。例,如下的写法是我们

2016-12-20 17:32:00 1572

空空如也

空空如也

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

TA关注的人

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