自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苦逼的程序猿☺

嗵,嗵,嗵,一库!!!

  • 博客(293)
  • 资源 (2)
  • 问答 (3)
  • 收藏
  • 关注

原创 FFmpeg结构体学习(一):AVFormatContext分析

前言统领全局的基本结构体,包含码流参数较多。它的源码位于libavformat/avformat.h。源码/** * Format I/O context. I/O格式上下文 * sizeof(AVFormatContext) must not be used outside libav*, use * avformat_alloc_context() to create an AVFormatContext. * * Fields can be accessed through AVOp

2021-11-19 17:27:52 1952

原创 音视频学习计划

前言打算利用业余时间根据下边博客思路,进行系统的音视频相关基础知识的学习总结!Android 音视频开发学习思路进度

2021-11-18 16:36:20 242

转载 FFmpeg DTS、PTS和时间戳TIME_BASE详解

本文转自:https://www.cnblogs.com/leisure_chn/p/10584910.html1. I 帧/P 帧/B 帧I 帧:I 帧(Intra-coded picture, 帧内编码帧,常称为关键帧)包含一幅完整的图像信息,属于帧内编码图像,不含运动矢量,在解码时不需要参考其他帧图像。因此在 I 帧图像处可以切换频道,而不会导致图像丢失或无法解码。I 帧图像用于阻止误差的累积和扩散。在闭合式 GOP 中,每个 GOP 的第一个帧一定是 I 帧,且当前 GOP 的数据不会参考前后

2021-11-09 16:50:06 8849

原创 C/C++链接过程、动态链接库.so和静态链接库.a

前言个人总结动态链接库静态链接库符号表strip不strip查看符号表1.使用objdump命令。objdump -tT xxx.so2.使用nm命令(个人觉得使用nm方式查看更方便。)nm -D xxx.so# -D或-dynamic选项表示:显示动态符号。该选项仅对于动态库有意义)得到的结果中以T开头的就是导出函数android中可以使用NDK下的工具:目录在NDK/android-ndk-r21b/toolchains/aarch64-linux-android-4.

2021-10-29 17:10:32 2806

原创 C++11:智能指针

RAIIRAII,全称资源获取即初始化(英语:Resource Acquisition Is Initialization)。RAII要求,资源的有效期与持有资源的对象的生命期严格绑定,即由对象的构造函数完成资源的分配(获取),同时由析构函数完成资源的释放。在这种要求下,只要对象能正确地析构,就不会出现资源泄露问题。传统 C++ 中,『记得』手动释放资源,总不是最佳实践。因为我们很有可能就忘记了去释放资源而导致泄露。 而 C++11 引入了智能指针的概念,使用了引用计数的想法,让程序员不再需要关心手动

2021-08-19 17:24:53 664

原创 C++11:Lambda表达式

声明Lambda表达式完整的声明格式如下:[capture list] (params list) mutable exception-> return type { function body }各项具体含义如下capture list:捕获外部变量列表params list:形参列表mutable指示符:用来说用是否可以修改捕获的变量exception:异常设定return type:返回类型function body:函数体但是并不是所有的项都必须写全,可以省略一些不需

2021-08-17 20:43:09 286

转载 C++:标准转换运算符reinterpret_cast

转自:https://www.cnblogs.com/ider/archive/2011/07/30/cpp_cast_operator_part3.html另外系列文章part1,part2,part4,part5对其他几种转换const_cast,static_cast,dynamic_cast都有较清晰深入的讲解!收藏一下!语法reinterpret_cast <new_type> (expression)介绍reinterpret_cast运算符是用来处理无关类型之间的转换;

2021-08-16 15:51:15 420

转载 C++11:std::function<void()> func;

转自:使用std::function作为函数入参关于std::function()在C语言的时代,我们可以使用函数指针来吧一个函数作为参数传递,这样我们就可以实现回调函数的机制。到了C++11以后在标准库里引入了std::function模板类,这个模板概括了函数指针的概念函数指针只能指向一个函数,而std::function对象可以代表任何可以调用的对象,比如说任何可以被当作函数一样调用的对象。当你创建一个函数指针的时候,你必须定义这个函数签名(表征这个函数的入参,返回值等信息);同样的,当你创建

2021-08-16 14:24:38 13711 1

原创 随手记(工作日常小贴士)

git忽略已经commit的文件git rm --cached xxxlogcat清除历史adb logcat -c

2021-08-04 18:50:09 97

原创 在c++头文件中写#include类的头文件与直接写class加类名有何区别

实例我们能看到这样的写法:A.h#include "C.h"class B;class A{ //...}A.cpp#include "B.h"class A{ //...}在A类的头文件中使用了#include xx.h,也有声明class xx,那么这两种写法有什么不同?不同class 类名只是声明存在这么一个类,但是通过这个声明无法得到任何关于此类的具体信息。这样你可以在其他使用到的地方声明一个该类型的指针。#include头文件则是将整个该头文件与使用

2021-07-05 14:23:05 2248

原创 C++学习笔记

本文来自菜鸟教程的总结。指针指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。一般形式为type *nametype为指针的基类型,name为指针变量的名字,*用来指示这个变量是指针。int var = 20; // 实际变量的声明int *ip; // 指针变量的声明 ip = &var; // 在指针变量中存储 var 的地址//打印相关变量的值//var----->20 表示变量var//ip----

2021-06-10 14:34:12 751 1

原创 NumberFormat数字格式化

将float或double浮点数转为百分数NumberFormat fmt = NumberFormat.getPercentInstance();fmt.setMaximumFractionDigits(2);//最多两位百分小数,如46.23%fmt.format(xx);将浮点数小数为0的格式为整数,不为0保留小数//这里小数为0的格式为整数,不为0的保留小数NumberFormat format = NumberFormat.getInstance();format.format(x

2021-02-02 18:06:05 758

原创 Bitmap和Drawable互转

直接上代码: public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = null; if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; if (bitmapDrawable.getB

2021-01-23 17:22:52 615

原创 Android限制输入框输入中英文和数字,并限制个数

需求输入框内只能输入中英文和数字,而且还要限制最多输入长度为18。方案可以使用InputFilter来过滤输入: //限制只能输入中文,英文,数字 InputFilter typeFilter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, in

2020-12-18 17:29:13 2187 1

原创 Android 6.0WebView加载前端网页白屏:Uncaught TypeError: Object.entries is not a function

前言前端写了一个页面,app在内部使用webview跳转打开,在6.0以上机子正常,但是在6.0一下打开白屏。问题在logcat中发现,打开页面时,报错:Uncaught TypeError: Object.entries is not a function所以定位到是页面js中的Object.entries貌似不认识啊,所以在MDN上查看了文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_O

2020-11-24 10:53:50 1500

原创 Android集成LeakCanary v2.5运行报错ClassNotFindException:Didn‘t find class “LeakCanaryFileProvider“

错误描述集成LeakCanary v2.5,很简单一行依赖:debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.5'在运行后,直接报错闪退:java.lang.ClassNotFoundException: Didn’t find class “leakcanary.internal.LeakCanaryFileProvider” on path: DexPathList[[zip file “/data/app/co

2020-10-16 15:59:32 1236

原创 Git全攻略

基础1.初始化git init //新建一个git仓库2.添加git add . //.表示将目录下全部内容添加到仓库3.提交git commit git commit -m 'xxxxxx' //带上提交信息4.新建分支git checkout newBranch //新建分支git checkout -b newBranch //新建分支并切换到该分支5.合并分支git merge合并两个分支时会产生一个特殊的提交记录,它有两个父节点。翻译成自然语言相当于:“

2020-10-13 11:52:36 200

转载 Android Studio升级到3.6.1后无法执行main()方法的问题

转自:https://blog.csdn.net/qq_26287435/article/details/104749689前言Android Studio升级到最新版3.6.1后,新建了个项目,发现无法执行Java类的main方法,很蛋疼。试了网上的各种方法,比如切换gradle离线模式、gradle.properties中添加android.enableAapt2=false等,我还尝试了重新情况Gradle缓存、重新下载gradle等方式,都没用。场景环境android studio版本:3

2020-09-08 18:19:07 222

原创 Android弹出和收起输入法键盘

自动弹起键盘 diaryEdit = findViewById(R.id.content_edit); diaryEdit.postDelayed(new Runnable() { @Override public void run() { //获得焦点 diaryEdit.requestFocus(); InputMethodManager

2020-08-17 11:04:33 2531

原创 RecyclerView添加了一个header后,自动滚动到了中间位置

前言在Recyview的嵌套使用时,还有ScrollView嵌套RecyclerView(不推荐),还有本篇标题那样的添加header,会出现RecyclerView自动滚动的问题,这里记录一下!出现这样的问题原因,就是嵌套的RecyclerView自动获得焦点导致的!解决方案这里网上其实是有一些方案的,常见的有以下3种:① 让Recycler自动滚动到顶部scrollview.post( new Runnable() { public void run() {

2020-07-09 16:03:35 792

原创 Android webview加载H5页面调起微信支付

场景一个H5的页面,需要在app内用webview展示,然后涉及到支付,要求能够调用微信支付来付款,页面没有问题,但是写完出现了一些问题。问题页面不显示,展示空白需要设置:webSettings.setDomStorageEnabled(true);否则,一些节点不支持显示,建议都加上这一句,并设置为true。点击支付调不起微信因为,webview支持http和https的scheme,我们知道微信的schem是weixin://,所以我们需要拦截这个url,并手动处理。需要我们重写:

2020-06-28 17:23:23 2415

原创 Gradle常用总结

前言之前在多版本多渠道打包,还有混淆相关的文章中对gradle相关的内容有一部分的了解,但是没有系统综合的总结过相关的知识内容,这里就工作中遇到的,包括一些碰到的问题做一下总结!什么是Gradle?Gradle是一个开源的自动化构建工具,被应用在AS中去构建我们的Android项目,代替了之前Eclipse中的ant。首先我们要明确一点,Gradle不是一种语言,它使用的是Groovy语言,关于Groovy,这里不多说,想要了解的可以查阅一些资料。Gradle version和Gradle plug

2020-06-09 14:43:41 481

原创 应用文本点击超链接的实现方式-ClickSpan(评论回复列表,协议同意等)

要实现的效果我们先看一下要实现的效果,就是一个非常常规的文本超链接或者类似微博里评论列表:我们在点击上边蓝色字体的时候都要跳转对应的页面。实现方式可能我们第一时间想到的方案就是使用Span去做,没错,这里我们就用ClickSpan去实现这样一个效果。首先我们要自定义一个ClickSpan: public SpannableString setClickableSpanContent(String item) { final SpannableString string

2020-05-11 11:31:49 669

转载 解决Activity跳转后弹出DialogFragment报错Can not perform this action after onSaveInstanceState

问题描述在一个activity中,有定时任务,到时间后弹出一个DialogFragment,如果弹出的时候,已经跳转到了下一个activity,就会报错:Can not perform this action after onSaveInstanceState。解决方案在DialogFragment中另写一个show方法: public void showAllowingStateL...

2020-04-17 19:26:29 2439 1

原创 Android TextView设置自动识别的超链接字体颜色,及自身点击事件无响应的解决办法

前言我们在给TextView设置超链接的时候,可能最简单的,Android已经给出了一个非常的简单的做法就是:在xml中设置:<!--all表示匹配所有,web表示匹配网址 -->android:autoLink="web" 或者//sp为SpannableStringLinkify.addLinks(sp, Linkify.WEB_URLS);如何设置超链接颜色...

2020-02-11 16:36:24 1492

转载 Android实现双击事件的监听

本文转自:Android实现双击事件的监听Android实现view的双击事件监听,一般使用的场景,列表双击顶部回到第一条!双击监听/** * view双击监听事件 */public class OnDoubleClickListener implements View.OnTouchListener { private int count = 0;//点击次数 pr...

2020-01-14 18:02:00 1636

原创 如何用一个list去更新另一个list

需求数据展示有一个list,它的泛型是一个实体类,然后我们编辑界面信息,获得了实体类中一个String字段的list,要求如果原list含有该字段的实体,则保留。如果没有,则去掉该实体。如果新加入,则new一个实体添加!方案在Java list的API中有两个方法,这里提一下,removeAll()和retainAll(),两个方法的参数都是Collection,前者是去掉两个集合中共有的元素,后者

2019-10-28 14:10:59 4405

原创 Android获取应用通知栏权限,并跳转通知设置页面(全版本适配)

前言现在一般应用都需要集成推送功能,给用户推送一些相关的消息,这就需要应用取得应用通知栏权限,但是目前国内大部分厂商默认都是不开启通知栏权限的,所以在需要的时候,就要先检测是否开启通知栏权限,如果未开启,则要引导用户去设置中打开通知栏权限。获取是否开启通知栏权限不多比比,直接上代码:public class NotificationUtil { private static fin...

2019-10-25 13:12:26 22456 7

原创 Android获取APK或者.jks签名信息

声明:本文非原创,是网上相关资料的一个总结!参考:Android查看应用签名方法获取apk证书MD5值的方法查看apk文件的签名方法一首先解压要查看的apk包,通过数据证书管理工具keytool查看apk的签名信息。具体步骤如下:1)将apk修改后缀为.rar文件后进行解压;2)进入解压后的META-INF目录,找到该目录下的xxx.RSA文件;3)打开Terminal终端,输入...

2019-10-23 20:38:02 2794

原创 Android获取标题栏高度

参考:StackOverflow上一篇回答:How to get the ActionBar height?直接上代码:TypedValue tv = new TypedValue();if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)){ actionBarHeight = TypedVa...

2019-09-16 13:27:23 466

转载 Android获取状态栏高度

转自:https://blog.csdn.net/xu_coding/article/details/80387893方法1: 默认当做20dp计算,这也是大多手机的状态栏高度。 private void getStateBar1(){ double statusBarHeight = Math.ceil(20 * this.getResources().getDisplayM...

2019-09-16 13:13:05 211

原创 关于React Native加载Android原生封装的动态ViewGroup组件失效的解决方案

前言近期,项目中需要在原生端封装一个ViewGroup组件,给RN那边使用,写完了之后发现一些动态的东西显示会有问题,比如最简单的visibility,但是同样的代码在原生里边运行没有问题,就很奇怪!由此觉得是RN的问题!问题分析因为觉得是RN的问题,所以就去GitHub上搜了RN项目的issue,果然这样的问题还是有挺多人遇到的,参考:Android native UI componen...

2019-08-12 18:18:39 1518

原创 Android应用在9.0版本手机或者target设置28需要关注的问题

前言app在设置target=28之后,在华为的一款9.0的手机上测试,出现大面积的图片显示不出来的问题(少部分正常显示),在调试过程中发现,不能正常显示的图片的url都是http的,能正常显示的图片都是https,由此找到问题原因,借此总结一下Android9.0版本对app的一些限制,还有在设置target为28之后,需要对9.0版本做的适配工作,这里不说9.0的功能,只了解对开发者需要注意...

2019-07-26 20:25:06 1739

原创 Android使得底部输入框在输入法上边显示

前言就类似QQ和微信聊天时的样子,在输入框获取焦点,弹出输入法的时候,使得输入框在输入法的上边显示!我在查阅了一些资料之后,下边几篇博客都提供了很好的思路:android输入框在软键盘的上面Android软件盘之使特定布局保持在软键盘之上android中如何实现点击EditText输入框,其它布局悬浮在软键盘的上面我的实例上边的几篇文章,在一般的布局页面,基本上都能满足实现想要的效果...

2019-07-17 14:48:19 3531 1

原创 面筋:Java实现返回一个二叉树的深度

二叉树关于二叉树的相关内容,这里收藏几个相关的博客,可以了解一下:Java数据结构与算法——二叉树及操作(包括二叉树遍历)一篇文章搞定面试中的二叉树题目(java实现)二叉树的广度优先遍历和深度优先遍历(Java实现)二叉树的深度首先定义了一个二叉树节点:public class TreeNode { TreeNode left; TreeNode right; ...

2019-06-03 01:14:29 518

原创 面筋:Java实现''the sky is blue''反转输出为"blue is sky the"

思路我们可能首先想到的是利用split()方法分割,然后利用StringBuffer逆序输出数组中字符串进行拼接!可是这样的空间复杂度比较高!先将字符串转为char[],然后整体对char[]进行逆序反转然后再根据空格位置,对每一个单词再次逆序反转实现直接上代码: //反转char[]字符数组的方法 private static void reverse(char[]...

2019-05-22 17:56:28 1259

原创 Android打包报错:Lint found fatal errors while assembling a release target.

前言这个也是最近出现的一个问题,当前Android Studio的版本是3.3.2,同样的代码在3.0.1版本没有出现!所以猜测应该是3.3.2版本,可能lint的执行更加严格!Anyway,来看一下这个错误!错误详情在打release包的时候,出现编译错误!Lint found fatal errors while assembling a release target. To pro...

2019-04-19 15:29:29 28896 12

原创 移动端视频进阶(三):OpenCV的集成及视频帧转cv::Mat的相关操作

前言在前两篇文章总结了移动端iOS和Android摄像头数据的回调预览,及向RGB的转换,还有对YUV420数据格式做了详细的了解!对于计算机图形图像的处理,有一个强大的开源库OpenCV,对应的也有移动端的release版本,可以很方便的帮助我们对摄像头的一帧数据进行各种处理,下边就来了解一下移动端和OpenCV的结合!集成首先我们要去OpenCV的官网,找到release版块!也就是下...

2019-04-18 19:31:44 2110

原创 Android Studio升级到3.3.2之后编译遇到的问题

问题一:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android因为我的NDK也升级到了最新的版本,所以在查了一些资料后发现,在NDK的changelog中,官方已经给了说明:This version of the NDK is incompatible with ...

2019-04-17 16:28:18 2198

原创 FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed

报错情况Android在使用Assets目录下的资源文件,读取报错:Java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed。之前,没有见到过这种错误!我这里使用了TensorFlow Lite文件,后缀为.tflite...

2019-04-11 09:54:08 9893 9

sublime text channel_v3.json

sublime text在下载插件的时候,package列表文件被墙,就是这里的channel_v3.json文件!

2019-01-23

OCR识别,简体中文识别包chi_sim.traineddata

OCR图像文字识别,简体中文识别包

2017-07-03

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

TA关注的人

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