
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
前言本片博客我们一起来研究Android系统音视频api中,应该算是最难、最复杂的类:MediaCodec。相对于之前介绍过的MediaPlayer,AudioRecod等等来说,MediaCodec用法稍微复杂了一些,而且有一些小坑值得踩一踩。首先熟悉一个MediaCodec的常用方法:createEncoderByType(@NonNul String type) :静态构造方法,ty...
前言android的线程池主要有四个:newSingleThreadExecutor:单线程池,同时只有一个线程在跑。newCachedThreadPool() :回收型线程池,可以重复利用之前创建过的线程,运行线程最大数是Integer.MAX_VALUE。newFixedThreadPool() :固定大小的线程池,跟回收型线程池类似,只是可以限制同时运行的线程数量哎??
前言今天在浏览技术大牛的公众号文章,看到一篇文章讲解了如果LifeCycle实现懒加载的新思路,经过学习和总结写一篇播放博客分享给大家。原文作者博客:https://juejin.im/post/5e085dafe51d45580769a1eb(此文章已授权鸿洋公众号)再为大家推荐两位大牛的公众号,对于处于突破拔高期的朋友非常有帮助:1、鸿洋大牛也是CSDN的知名博主:https://m...
前言在以往的Fragment使用中,我们都是使用Fragment的事务进行添加,删除,替换等操作,为了快速开发,我们也会自行封装一个FragmentController。在去年,Google推出了Navigation库,目标是更优雅的管理Fragment。正文首先我们回顾一下Fragment的事务:fragmentManager.beginTransaction().add(xxx).co...
所有的文章都是自己的经验和总结,如果有错误的地方欢迎留言指正,以免影响其他的少年。上一篇有提到一个知识点:transaction.commit();transaction.commitAllowingStateLoss();先提前说明:两者都可以提交fragment的操作,唯一的不同是第二种方法,允许丢失一些界面的状态和信息,几乎所有的开发者都遇到过这样的错误:无法在activity调用了onSa
前言这篇我觉得应该是一个讨论篇,因为我自己还没有找到一个非常满意的答案,希望大家一起来讨论。正文元注解RetentionPolicy,表明注解的生命周期:1、SOURCE:在原文件中有效,被编译器丢弃。2、CLASS:在class文件有效,可能会被虚拟机忽略。3、RUNTIME:在运行时有效。RUNTIME肯定没有意见,因为只有他能够在运行时得到注解,例如之前的数据库框架。那
前言20天后,终于良心发现更新博客了,又到了年底,好多的事情都要收尾,今天分享一个RecyclerView的容器类,帮助大家实现添加Item的浮层的效果。首先看一下效果图:有人会问我:老铁,你实现的这个东西有个卵用?如果你没看明白,我们再看一张非常熟悉的应用场景:正文记得2年前在创业公司的时候,正是短视频火爆的高峰期,公司也做了一款二次元的短视频app,很可惜还没上线就被腰斩了。当时...
前言上一篇我们已经学习了PCM音频的保存格式,这一篇我们通过掌握的知识,完成PCM音频的单声道和双声道的互相转换。正文首先我们把上一篇的最核心部分贴出来:我们首先完成单声道转双声道的操作。单声道转双声道单声道转双声道的基本原理:由图可知,我们需要把单声道的每一份数据都拷贝一份到右声道,这样使用双声道播放就没有问题了。首先我录制了一个音频保存到ArrayList中:priv...