自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wozuihaole的博客

一只android小白的晋升之路

  • 博客(58)
  • 资源 (14)
  • 收藏
  • 关注

原创 android使用RTMP实现录屏直播推送音视频(已在享学公众号发表)

目录MediaCodec编码音频MediaCodec编码视频H264裸流格式分析FLV封装格式分析利用librtmp封包发送一、MediaCodec编码音频创建音频编码器,指定AAC格式,采样率44100,码率64_000,单声道; //创建编码器 MediaFormat mediaFormat = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC,

2021-01-12 15:55:11 2980 6

原创 Activity的启动流程源码解析

一、应用内启动我们平时启动一个activity一般都是调用startActivity方法,接下来就看看startActivity方法具体为我们执行了哪些流程去帮我们启动一个activity吧。1.先简单的看一下调用关系时序图(基于android28源码)我知道你可能看不清,点击链接查看时序图2.源码分析 Activity.java @Override public void startActivity(Intent intent) { thi.

2020-09-12 17:01:28 553

原创 android利用AudioRecord实现录音功能(kotlin语言)

一、操作步骤:1.设置录音相关参数,音频采集源、采样率、声道、数据格式companion object{ private const val TAG:String = "OnlyAudioRecorder" private const val AudioSource = MediaRecorder.AudioSource.MIC//生源 ...

2020-01-21 16:39:15 2906

原创 android使用FFmpeg解码MP4中的音频并使用AudioTrack播放

虽然网上有很多类似标题的博客,但是他们的代码运行之后一般都会有杂音或者其他的播放问题,原因也很简单,就是他们的代码太老了,网上现在一般流传的都是FFmpeg2点多的相关代码,而官网都是4点多了,所以一些方法的废弃更替导致了别人说能正常播放,而你的代码却运行异常。废话不多说了,我使用的的ffmpeg-3.3.9编译的.so库,android-ndk-r14b。如果你也跟我的配置一样那就OK了,如...

2019-09-04 16:31:41 622 2

原创 FFmpeg入门知识(二):Windows环境下编译FFMPEG源码

主要参考https://blog.csdn.net/qq_38261174/article/details/83210458主要参考的上面大神的操作,不过由于环境不一样,有些采坑点增加,我的电脑是win10系统。一.所以我们总共需要下载的东西有:NDK https://developer.android.google.cn/ndk/downloads/ 版本r14 MInGW...

2019-08-08 15:33:35 1285 1

转载 FFmpeg入门知识(一):FFmpeg在Windows上的安装

转载:https://blog.csdn.net/qq_38261174/article/details/83175751这篇文章只教你怎么在Windows上通过命令行直接操作FFmpeg对视频文件进行编辑,不涉及开发。ffmpef 该程序只有命令行模式,下载下来一个压缩包,解压,然后配置环境变量,然后使用命令行操作。1.下载下载地址:https://ffmpeg.zeranoe....

2019-07-23 10:47:45 509

原创 工具记录,使用jarsigner 对APK进行签名

可用于没有签名和已经签名的apk,再次签名。jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]命令格式及参数意义:-verbose -> 输出签名过程的详细信息-keystore [keystorePath] -> 密钥的库的位置-signedjar [apk...

2019-06-11 15:55:12 761

原创 android实现Materia Design风格APP(六):结束,实现APP

我们最终可以实现的效果是这样的,接下来就分析下每个页面都用了哪些控件来实现,哪些效果,具体的代码我也会上传。1.首页,使用到的控件我在前面都讲过,请自行点击链接学习android实现Materia Design风格APP(二):部分Materia Design风格的控件介绍一android实现Materia Design风格APP(三):部分Materia Design风格的控件介...

2019-04-15 11:20:41 280

原创 android实现Materia Design风格APP(五):RecyclerView自定义item动画和共享元素动画

1.RecyclerView自定义item动画使用布局动画可以很方便的实现这个功能,布局动画的定义过程就是创建在res下创建anim路径,然后自定义我们的layoutAnimation和set动画集合,然后在RecyclerView的xml中把layoutAnimation赋值给android:layoutAnimation属性。需要注意的是你的item布局里如果有ImageView一定不...

2019-04-12 17:12:11 1463

原创 android实现Materia Design风格APP(四):ViewPager同时显示3个item及设置切换动画

1.实现viewpager同时显示三个item,这个效果实现起来还挺简单的。只需要设置viewPager.setOffscreenPageLimit(3); 让viewpager可以显示3个item,并设置viewPager.setPageMargin(50);让每个item间有点间隔的效果 。在xml布局中设置viewpager和他的父控件的clipChildren属性为false就好了。...

2019-04-12 14:54:27 878

原创 android实现Materia Design风格APP(三):部分Materia Design风格的控件介绍二

本篇大部分内容学习自第一行代码第二版加上部分自己理解。介绍了,DrawerLayout、NavigationView、NestedScrollView、AppBarLayout、CardView、SwipeRefreshLayout、CollapsingToolbarLayout七个控件,会的请自行跳过。首先需要在build.gradle中依赖:implementation 'com.a...

2019-04-12 12:56:03 388

原创 android实现Materia Design风格APP(二):部分Materia Design风格的控件介绍一

本篇大部分内容学习自第一行代码第二版加上部分自己理解。介绍了,Snakebar、FloatingActionButton、CoordinateLayout、ToolBar四个控件,会的请自行跳过。首先需要在build.gradle中依赖:implementation 'com.android.support:design:28.0.0'1.Snackbar我感觉是一个增强版的To...

2019-04-12 10:41:13 342

原创 android实现Materia Design风格APP(一):开篇

Materia Design风格也出现很久了,由于我们项目一直没有UI改造过,所以也没做过这方面的学习,前几天同事突然拿来一个别的公司的APP动态图给我看了看,觉得实在很好看,就花了点时间来试着实现了一下,顺便学习了一些新的UI控件的使用方法,怕长时间不用会忘,所以开这个专栏供大家分享,也是做个笔记。好了,废话不多说,下面这个动态图就是我们这个专栏学习完,最终可以完成的APP(CSDN不能传视...

2019-04-12 10:38:26 299

原创 android实现控件的手势缩放、移动以及双击还原

我分四部分介绍:       1.Imageview利用Matrix和OnScaleGestureListener实现手势缩放;       2.在第一部分的基础上实现图片跟随手指进行滑动;       3.在一、二的基础上利用GestureDetector的OnDoubleTap回调实现图片双击还原;       4.在一、二、三的基础上将ImageView扩展为FrameLay...

2018-11-12 14:25:57 3149 1

转载 Android GC机制介绍

转载自链接垃圾收集器一般必须完成两件事:检测出垃圾、回收垃圾。怎么检测出垃圾?一般有以下几种方法:1.引用计数法:给一个对象添加引用计数器,每当有一个地方引用它,计数器就加一,引用失效就减一。好了,问题来了,如果我有两个对象互相引用,除此之外没有其他任何对象引用他们,实际上这两个对象已经无法访问,即我们说的垃圾对象。但他们互相引用,计数不为0,所以无法回收。这就是引用计数法的缺陷。...

2018-08-20 17:01:24 9292 2

原创 Android O后台服务限制总结

我们看Android O的新特性的时候会看到这样一个介绍:多个 Android 应用和服务可以同时运行。 例如,用户可以在一个窗口中玩游戏,同时在另一个窗口中浏览网页,并使用第三个应用播放音乐。同时运行的应用越多,对系统造成的负担越大。 如果还有应用或服务在后台运行,这会对系统造成更大负担,进而可能导致用户体验下降;例如,音乐应用可能会突然关闭。为了降低发生这些问题的几率,Androi...

2018-08-16 16:13:21 6319 3

原创 android查看统计项目的方法数

最近项目需要添加新的jar包,但是jar包引入后发现出现了65535问题,我就想知道自己原来项目中的方法数达到了多少。是我们的项目太大了需要瘦身,还是引用的jar包中的方法数太多,需要改用同类型的其他jar包。方法就是使用dex-method-counts.jar这个jar包,当然了这是网上其他人编译好的,直接就能用,我没有自己去编译这个。使用方法就是:1.打开你电脑的cmd.exe;...

2018-08-06 11:44:20 1233

原创 Glide修改本地图片缓存路径

1.首先你的项目需要先依赖glide;2.创建一个类实现GlideModule接口package com.example.fruittest;import android.content.Context;import android.os.Environment;import com.bumptech.glide.Glide;import com.bumptech.glide...

2018-08-01 13:59:46 2886 1

原创 android自定义软键盘

本篇文章将会介绍3种android自定义软键盘的应用场景以及代码编写,分别是:普通的自定义软键盘;每次弹出都会改变数字顺序的自定义密码键盘;能与webview交互的自定义密码键盘。以上说的这三种其实本质上没有太大区别,只是细节调用和写法上有略微区别,我们项目里用到是最后一种,但是网上对最后一种的介绍很少,这三种自定义软键盘的介绍顺序也是我的推导顺序,第一种是基础,有了基础后续推导会容易很多,如果你...

2018-05-18 14:47:08 12394 1

原创 Android Studio导入项目运行出现大量警告,且报错GC,解决办法

问题描述:同事给了一个项目让我运行,我打开工程后,本地使用的gradle 3.3版本和com.android.tools.builld:gradle:2.3.2版本都要高于项目本身指定的gradle 2.14.1和2.2.3,使用本地自己的版本没有去下载项目原来指定的版本,build项目没有问题,运行项目,发现运行时间很久,半天都没动静,运行结束发现报错了。错误如下:1.Warning:warni...

2018-03-27 10:32:12 1521

原创 android实现填空模式

最近需要实现个需求,感觉还挺常用的,并且挺有意思,所以记录一下,要求是显示一段文字,文字中间有填空的地方,用户点击填空的下划线,可以输入内容,输入完成后的内容替换到填空上,这段文字的长度自动变化。如图:模拟器效果略卡,接下来说说怎么实现的吧。1.准备工作:我们需要先了解SpannableString这个对象类型的使用方法。先来点简单的:使用ForegroundColorSpan为一段文字设置不同的...

2018-03-02 16:37:39 2466 5

原创 设计自己的ImageLoader图片加载框架

一、框架实现的功能:1.实现了基于LRUCache的内存缓存机制;2.实现了基于DiskLRUCache的sd卡缓存机制;3.实现了基于httpconnection的网络下载图片机制;4.实现了根据指定宽高压缩图片;5.实现了未指定宽高时根据imageview控件宽高压缩图片;6.基于面向对象6大原则使得程序本身更加稳定、更加灵活、更好扩展。二、框架执行流程分析

2017-12-17 20:05:36 949

原创 八皇后算法解析(java代码演示)

问题描述:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。图解:1.首先我们需要一个8*8的空白棋盘;2.在第0列的皇后我们可以随便摆放,因为是第一个皇后,不存在和其他皇后冲突的问题,所以我们从第0个位置开始摆放她;3.第1列的皇后不能和第0列的皇后同行或在对角线,所以不能放在0和1行;4.第2列的皇后不

2017-11-21 14:50:49 2682

原创 android解压sd卡中的压缩文件

我是用的ZipFile这个类,这里需要说明一下,这个类有两个一个是在org.apache.tool.zip包里,另外一个在java.util.zip包下,这个两个的区别在于后者的解压效率快于前者,但是前者可以解决被解压文件中含有中文字符乱码问题,他们的使用方法基本一致,所以就要看你需要解压的文件里是否包含中文了。我这里就先用Apache包下的ZipFile来实现了,使用方法:1.添

2017-11-09 15:38:03 1456 1

原创 使用讯飞实现语音听写与语音合成功能

一、准备工作1、首先你需要去科大讯飞的官网去注册一个账号,怎么注册我就不说了,然后去控制台,创建新应用。2、下载对应的sdk,点击sdk下载,记住这里的APPID码,sdk初始化要用。3、下载语音听写和在线语音合成对应的sdk(离线的语音听写需要手机安装语+这个软件才能用,离线语音合成收费,我就没考虑)4、将压缩文件中的asset

2017-10-09 13:44:43 3790

原创 java二叉树的遍历,递归与非递归方法

定义:1.二叉树是n(n >= 0)个节点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成。2.所有的结点都只有左子树的二叉树叫左斜树。所有结点都是只有右子树的二叉树叫右斜树。这两者统称为斜树,线性表结构可以理解为斜树。3.在一棵二叉树中,如果所有分支节点都存在左子树和右子树,并且所有叶子都在

2017-09-22 15:41:44 558 1

原创 Android studio java.lang.UnsatisfiedLinkError加载.so文件失败解决办法

问题:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.demozd-1/base.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]] couldn't fin

2017-09-22 15:17:39 1791

原创 Android LinkedList的部分源码解析

写这篇文章主要是因为我自认为我画了一幅很好看的双向链表图,O(∩_∩)O哈哈~LinkedList是链式存储方式的线性表,LinkedList中的元素有前区和后继,头尾前区后继互指所以是双向循环链表private static final class LinkET> { ET data; LinkET> previous, next; Link(ET o

2017-09-07 15:51:11 359

原创 Glide用法总结

1.基本使用方法:Glide.with(this)//设置上下文对象,可以是context、activity、fragment、fragmentActivity、v4包下的fragment, Glide的生命周期与这个对象一致 .load(url)//加载的路径,包括网络图片、本地图片、应用资源、二进制流、Uri对象等等

2017-08-25 16:59:11 697

原创 xml文档的pull解析与SAX解析

一、Pull解析:1.在java中的使用方法:                                                        1)首先InputStream ins = this.getClass().getClassLoader().     getResourceAsStream("xxx.xml");获取到一个流对象            

2017-08-01 12:25:15 328

原创 Android利用手机拍照和从相册读取照片的方法

private void initView() { //拍照按钮 photo = (ImageView) findViewById(R.id.photo); Button take_photo = (Button) findViewById(R.id.take_phone); take_photo.setOnClickListener(new View.OnCl

2017-07-31 14:55:20 1429

原创 已有项目依赖cordovaLib打包后调用插件崩溃问题

已有项目为完成某些需求依赖了cordovaLib,我们项目是直接把cordovaLib打成jar包加进项目里,增加了一些cordova的插件,项目运行正常,但是打包后出现被调用的插件找不到相关类的问题。原因:   项目打包过程中将cordova相关插件的java类进行了混淆,所以html无法根据之前在config.xml中配置的包名.类名中找到对应的java类。解决方法:  在

2017-06-28 15:28:15 1121

原创 cordova自定义插件步骤

注意事项:.js文件中的任何标点都不能写错以让网页吐司为例:1.   新建一个Toast.js,在assets—》www—》plugins下新建一个cordova-plugin-xxx的文件夹,然后在这个文件家里创建一个xxx.js的文件Toast.js的内容如下:如果还不明白请对照参考cordova-plugin-xxx任意文件夹下的原始代码; 2. 

2017-06-28 15:08:27 568

原创 Android透明状态栏或者渐变色状态栏

一、透明状态栏:我们应用的正常状态栏都是黑乎乎的,就像下面这样(模拟器版本Android4.4.2):不好看,我们希望的是向这样的:这样感觉比黑黑的statusBar好看多了。实现方法:1.去/res/values/styles.xml里找到你activity或者application使用的theme,theme一定要使用NoActionBar的随便一种;

2017-05-27 15:01:13 7303

原创 Android studio打包遇到的问题总结

项目是从eclipse移到studio里的,直接运行没有任何问题,但是打包生成apk的时候居然出错了,简直忍无可忍。问题总结:1.Error:Error: Expected resource of type id [ResourceType]这是说你的资源id设置错误,我们在eclipse里直接setId(1)这样写没问题,但是AS编译不通过。解决方法:       1.直接在

2017-05-26 15:28:28 3574

原创 fragment嵌套viewpager嵌套fragment第二次加载数据不显示问题

这几天做项目遇到一个问题,就是有这么一个页面是activity嵌套一个fragment1然后fragment1里放了一个viewpager,viewpager里放了几个fragment,本来只有这么一个页面,显示出来也没什么问题,现在加新需求,要求点击viewpager里的一个fragment里的按钮跳转到另一个fragment,新fragment按返回按钮返回盛放viewpager的fragme

2017-05-24 14:52:51 2518

原创 自定义RatingBar

最近公司项目里增加了一个评价功能模块,就要用到咱们最常见的ratingBar了,大家都知道系统自带的ratingBar有多丑,所以打算自定义,然后翻看资料,说是在drawable里写个.xml文件,例如这样:        然后在布局文件里android:progressDrawable="@drawable/rating_style",运行试试,恩,还不错,等等下面的流苏

2017-05-15 23:12:45 562

原创 Android把文字写到图片上生成图片+文字的新图片

我们项目最近需要微信分享员工二维码功能,二维码图片直接使用zxing就可以生成,但是生成之后只有一个图片,而我们需求的要求是这样的:                                                          没错就是二维码下边有一行提示文字,你可能会想直接imageview下边放个textview就行了,没错这样在你的APP里显示效果确实是达

2017-04-21 10:05:41 11663 17

原创 总动循环播放长图片

怎么让我们的长图片不用滑动而自己动起来呢?思路:1.自定义一个图片呈现控件继承view;2.我们先得到控件的宽度controlWidth,和图片的宽度bitmapWidth,图片移动距离初始值为0;3.每隔1毫秒移动一次偏移量,然后重新绘制图片;4.从源图片上截取减去偏移量显示在控件上的图片部分生成一张新的图片绘制到画布上;5,如果图片减去偏移量的部分不足以填充

2017-04-19 17:00:12 1313

原创 实现UncaughtExceptionHandler来实现获取应用全局的crash信息

Android应用不可避免的会出现各种崩溃crash,平时我们可能会通过try-catch来捕获异常,可是我们总不可能每一段代码都try-catch,所以我们还是会有很多捕获不到的异常,而且一旦应用发布后,在客户端出现的问题我们也不能debug调试,也没有logcat了,客户端崩溃后用户体验很不好,但是我们因为捕获不到相关异常信息想要修复程序也显得有心无力,其实Android是提供了一个可以设置的

2017-04-18 10:48:50 7018

macOS arm64-monterey telnet安装 telnet.zip

下载本文件放到 cd /usr/local/bin/ 并赋予权限 chmod +x telnet

2023-05-09

android使用RTMP实现录屏直播推送音视频

附带Nginx服务器搭建文档和flv分析器,详细博客内容链接:https://blog.csdn.net/wozuihaole/article/details/107838147

2020-08-06

FFmpeg解码MP4分别播放YUV视频和PCM音频

博客讲解请到https://blog.csdn.net/wozuihaole?t=1我的博客里看

2019-09-04

mingw离线安装包

解压文件,然后分别解压里面的三个压缩包,将msys放到mingw64目录下,将yasm.exe放到mingw64/bin目录下

2019-07-23

android缩放控件

1.Imageview利用Matrix和OnScaleGestureListener实现手势缩放;        2.在第一部分的基础上实现图片跟随手指进行滑动;        3.在一、二的基础上利用GestureDetector的OnDoubleTap回调实现图片双击还原;        4.在一、二、三的基础上将ImageView扩展为FrameLayout,实现布局内所有子控件都能手势缩放、移动、双击还原。

2018-11-12

android统计项目中方法数的工具(dex-method-counts)

android统计项目中方法数的工具(dex-method-counts),使用方法介绍链接:https://blog.csdn.net/wozuihaole/article/details/81450331

2018-08-06

android三种自定义软键盘demo

demo内容介绍https://blog.csdn.net/wozuihaole/article/details/80364296

2018-05-18

android实现填空模式demo

详细介绍请看:http://mp.blog.csdn.net/postedit/79423482

2018-03-02

包含Apache包中的ZipFile相关类的jar包

这个ZipFile是Apache包里的,可以解决被解压的文件中包含中文产生的乱码问题

2017-11-09

Android透明状态栏和颜色渐变状态栏

Android透明状态栏和颜色渐变状态栏

2017-05-27

fragment嵌套viewpager嵌套fragment二次不显示内容解决demo

这几天做项目遇到一个问题,就是有这么一个页面是activity嵌套一个fragment1然后fragment1里放了一个viewpager,viewpager里放了几个fragment,本来只有这么一个页面,显示出来也没什么问题,现在加新需求,要求点击viewpager里的一个fragment里的按钮跳转到另一个fragment,新fragment按返回按钮返回盛放viewpager的fragment,这时就出现了viewpager里的fragment二次显示的时候数据没了

2017-05-24

仿iOS滚轮选择器 下载

这个是我自己写的一个仿iOS滚轮选择器的自定义控件,使用方法和代码分析都在我的博客里,博客地址是:http://blog.csdn.net/wozuihaole/article/details/70169684

2017-04-14

仿iOS滚轮选择器自定义控件源码

仿iOS滚轮选择器自定义控件源码

2017-04-14

Android视频播放器

MediaPlayer+SurfaceView,VideoView,Vitamio三种实现方法源码,你可以在清单配置文件中更改启动页面来改各种页面,资源里的两个moudle都需要导入一个是源码,一个是vitamio的library

2017-03-08

空空如也

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

TA关注的人

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