自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 FFmpeg命令实例合集

ffmpeg命令实例

2019-11-15 17:41:55 1170 2

原创 Android OpenGL ES基本用法,目录

Android OpenGL ES基本用法(1),环境的搭建 Android OpenGL ES基本用法(2),绘制三角图形 Android OpenGL ES基本用法(3),绘制四边形 Android OpenGL ES基本用法(4),绘制纹理图片 ...

2019-09-19 14:57:16 201 0

原创 【设计模式六】原型模式简介、深拷贝浅拷贝问题

定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通...

2020-07-11 21:06:53 20 0

原创 【设计模式五】模板方法模式简介

定义 定义一个操作中,算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 例子1,给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印 AbstractSort packa...

2020-07-11 11:03:03 13 0

原创 YUV格式简介、YUV444、YUV422、YUV420

YUV是一种颜色编码方法,Y表示亮度(Luma),也就是灰度值。U分量和V分量重存储了是色度(Chroma)信息,主要作用是描述了视频的色彩及饱和度,用于指定每个像素的颜色。主要用于电视系统以及模拟视频领域,它将亮度信息Y与色彩信息UV分离,没有UV信息一样可以显示完整的图像,显示出来将是黑白效果...

2020-07-04 11:20:36 80 0

原创 Java 单链表的删除操作

测试代码 package com.zhangyu; public class LinkedListTest { /** * 定义节点的结构 */ static class Node { int data; Node next;...

2020-07-02 17:30:26 36 0

原创 Java 静态初始化块、普通初始化块

初始化块 Java中可以通过初始化块进行数据的赋值。 在类的声明中可以包含多个初始化块,当类创建实例的时候就会依次执行这些代码块。 如果使用static修饰初始化块,就称为静态初始化块。 需要注意的是,静态初试化块只在类加载的时候执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变...

2020-07-01 17:27:55 26 0

原创 Java 集合 Collection、Map 的整体结构图

说明 1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。 2. 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 3....

2020-06-30 18:27:39 39 0

原创 Java Synchronized 同步锁的基本用法

开启线程的方式 /** * 两种创建线程的方式 * Thread/Runnable(推荐) * * 调用start方法后,并不是立即执行多线程的代码,只是将这个多线程状态变为可运行状态,而不是执行状态 ...

2020-06-30 12:53:06 43 0

原创 Android Activity的4种启动模式(launchMode)和对生命周期的影响

Standard标准模式,默认模式,每次都会再任务栈顶部重新new一个Activity SingleTop栈顶复用,如果要开始起Activity在栈顶,则复用。应用场景,IM、新闻等推送消息页面。 SingleTask栈内复用,清除该Activity上面的所有其他Activity。应该场景例如...

2020-06-30 08:56:04 35 0

原创 Android AsyncTask 串行和并行测试

创建一个自己的MyAsyncTask package com.zhangyu.asynctasktest; import android.os.AsyncTask; import android.util.Log; public class MyAsyncTask extends AsyncT...

2020-06-29 13:26:55 53 0

原创 Java 反射的基本介绍

类类型,类的动态加载 package com.zhangyu; public class ClassTest { public static void main(String[] args) { //Test的实例对象如何表示 Test test1 = n...

2020-06-26 17:34:51 39 0

原创 Java try-catch-finally 执行流程

参考文献 try{}里面包含可能会出错的代码?如果里面出错了,他回交给catch{}处理,catch可能把这个错误给屏蔽掉(就比如说你牙疼不能吃饭,给给力来个止疼的,不影响你做其他的事情了)。。不影响你之后的代码运行。。但是如果你try{}里面有多行代码第一行,第二行,第三行,如果第二行出错了,第...

2020-06-24 12:29:37 28 0

原创 Java 中 Map、HashMap、LinkedHashMap、TreeMap

结论: 如果没有特殊的其他需求,例如,录入顺序,使用顺序,key顺序情况下。 500万以下。 一次性put所有数据,或一次性get所有数据,LinkedHashMap性能最好 500万以上 一次性put所有数据,LinkedHashMap比HashMap慢一点 一次性get所有数据,LinkedH...

2020-06-23 18:00:31 37 0

原创 Android Broadcast Receiver 广播接收者基本用法和跨进程通信

创建一个广播接收器 package com.zhangyu.broadcasttest; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent...

2020-06-21 22:14:58 30 0

原创 Android startService和bindService的区别和用法

不推荐使用bindService启动IntentService是因为不会执行onHandleIntent方法 1、生命周期上的区别 执行startService时,Service会经历onCreate->onStartCommand。当执行stopService时,直接调用onDestroy...

2020-06-21 15:56:58 74 0

原创 Java 把一个字符串中的单词原地进行反转。比如“abc de fgha”,反转成“cba ed ahgf”

方案一(部分情况下不适用) 使用split分割空格乎,然后通过StringBuffer进行反转。不适用的情况如,前后空格的,中间两个单词中有多个空格时,不能保证原地反转。 public String reverse(String str) { Log.e(TAG, &quo...

2020-06-21 12:08:28 45 0

原创 Android ContentProvider实现进程间通信

Manifest <provider android:name=".MyContentProvider" android:authorities="com.zhangyu.testcontentprovider&q...

2020-06-19 10:32:47 54 0

原创 Android Demo 调用360搜索接口查询图片

https://gitee.com/olleh/RealTest.git Gradle dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) imp...

2020-06-17 18:32:19 42 0

原创 Android四种引用类型,强引用、软引用、弱引用、虚引用

引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)四种引用类型。这四种引用类型的引用强度依次逐渐递减。 强引用: 强引用在代码中普遍的存在,类似与“Object obj ...

2020-06-17 09:51:48 55 0

原创 Android Activity的Context和Application的Context区别

Activity Context 1.使用的时候需要判断是否在Activity的周期内,如果超出范围,则使用Application Context 2.某些情况下必须使用Activity的Context例如dialog,startActivity等。(如果超出范围,则可以使用弱引用) 3.跟UI相...

2020-06-16 18:51:02 61 0

原创 Java单链表的插入和删除操作

StudentNode package com.zhangyu.linklisttest2.linkedlist; import java.util.Objects; /** * 节点类 */ public class StudentNode { int id;//学号 S...

2020-06-14 17:24:23 75 0

原创 Android MediaCodec解码音频,AudioTrack播放音频,PCM数据写入文件

电脑端FFmpeg直接操作PCM 提取PCM数据 ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm 播放PCM ffplay -ar 44100 -ac 2 -f s16le -i out.pcm PCM转WAV ffmpeg -f...

2020-06-08 07:53:16 44 0

原创 Android StringBuilder和StringBuffer

String 在Java中String的值是不可改变的,这就导致每次对String的操作都会生成一个新的String对象,效率低下并且浪费资源。 StringBuffer和StringBuilder 经常性对字符串进行操作的时候,使用StringBuilder和StringBuffer。 主要...

2020-06-05 18:11:33 29 0

原创 Android OpenSLES 播放PCM数据

MainActivity.java package com.zhangyu.androidopensl; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import an...

2020-05-05 17:08:45 95 0

原创 Android c++调用java方法

1.主线程中调用Java方法 public native void nativeCallJava(); public static native void nativeCallJava2(); public void test1() { Log.e(&q...

2020-05-03 09:58:52 113 0

原创 Android studio 引入FFmpeg422+libx264 并支持命令行工具

Android Studio 引入 FFmpeg-339/405 支持命令行工具 1. 复制以下文件到项目中 编译后的根目录下的 config.h 源码中fftools下的 cmdutils.c cmdutils.h ffmpeg.c ffmpeg.h ffmpeg_filter.c ffmpeg...

2020-05-03 09:54:36 97 1

原创 Android C语言中的正则表达式

C语言中的正则表达式 3个步骤: 1.编译,regcomp() 2.匹配,regexec() 3.释放,regfree() 1.int regcomp( regex_t *compiled, const char *pattern, int cflags) 把正则表达式pattern...

2020-04-26 22:08:28 48 0

原创 Android 将bitmap保存为本地png图片

BitmapUtils package com.zhangyu.myopengl.utils; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; impor...

2020-04-23 00:29:31 173 0

原创 Android 录音的3种方式,1.调用系统录音,2.AudioRecord,3.MediaRecoder

1.调用系统的录音机并返回录制结果 https://blog.csdn.net/yu540135101/article/details/103655058 2.使用AudioRecord返回PCM数据 3.使用MediaRecorder录制 package com.example.zhangyu....

2020-04-20 23:17:30 120 0

原创 Android 使用MediaRecorder录音

首先要获取录音权限,读写磁盘权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:nam...

2020-04-18 16:43:43 70 0

原创 Android OpenGL ES基本用法(14),MediaCodec录制Camera视频

视频编码 得到MediaCodec的输入Surface,然后OpenGL把视频数据渲染到这个Surface上,MediaCodec就可以进行视频编码了。 1、surface = videoEncodec.createInputSurface(); 2、eglHelper.initEgl(su...

2020-04-17 16:40:32 87 0

原创 Android OpenGL ES基本用法(13),渲染Camera数据

原理 OpenGL生成纹理并绑定到SurfaceTexture上,将Camera数据设置到SurfaceTexture上,然后就可以从OpenGL中获取到Camera数据了 使用扩展纹理 1、着色器纹理类型: #extension GL_OES_EGL_image_external : requi...

2020-04-07 13:13:02 111 0

原创 Android ScreenUtils获取屏幕的宽高,计算出一个等比例的最大区域

/** * 获取屏幕的宽高 * @param context * @return */ public static int[] getScreenSize(Context context) { DisplayMetrics displ...

2020-04-06 14:18:02 81 0

原创 【设计模式四】适配器模式adapter

定义 将一个接口转换成用户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(wrapper) 一,类适配器 类的适配器模式把适配的类的API转换成目标类的API Adapter继承自Adaptee Adaptee public class Adaptee { ...

2020-03-30 19:44:44 37 0

原创 Android 编译 ffmpeg-4.2.2 + libx264 (NDK17以后使用的是Clang)

libx264源码下载地址 http://www.videolan.org/developers/x264.html ffmpeg源码下载 http://ffmpeg.org/download.html gcc编译Android的libx264 libx264使用gcc进行编译,NDK版本andr...

2020-03-29 18:55:26 652 0

原创 【设计模式三】策略模式简介,并利用策略模式和反射优化if-else

StrategyContext package com.zhangyu.myapplication.strategy; public class StrategyContext { private StrategyAbstract strategyAbstract; publ...

2020-03-29 14:21:45 32 0

原创 Android Studio 引入 FFmpeg-339/405

1.新建C++工程 新建 两个externalNativeBuild 一个sourceSets(指定so路径) android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfi...

2020-03-17 10:57:45 102 0

原创 Android 调用系统相册,选择音频,视频,图片

private final int REQUEST_CODE_SELECT_VIDEO = 112; //播放视频的路径 private String videoPath; private void selectVideo(){ Intent i = ne...

2020-02-20 11:42:37 676 0

原创 Android 枚举的简单用法

package com.zhangyu.myanimation; public enum MyDay { Monday(1, "星期一"), Tuesday(2, "星期二"), Wednesday(3, "星期三&quo...

2020-01-06 16:23:50 35 0

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