自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(166)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android OpenGL ES 学习(十三) -离屏渲染FBO(截图)RBO, OES转 FBO

最近遇到需要截图的功能,发现直接使用 GLES30.glReadPixels 竟然达到了2s多,且会阻塞卡顿。因此有必要学习一下 FBO 了。

2023-07-06 17:52:39 2989 2

原创 top 输出中涉及到的一些参数的解释

top 命令是一种能够实时查看系统进程列表,进程内存占用率以及CPU占用率的工具,因此,掌握一些命令和参数的意义,对我们开发也是至关重要。

2023-04-04 10:42:19 455 1

原创 Android OpenGL ES 学习(十二) - MediaCodec + OpenGL 解析H264视频+滤镜

OpenGL 学习教程前面我们学习了OpenGL是如何渲染 YUV 视频的,这一章,我们让OpenGL 与 MediaCodec 结合,实现解析 H264 文件,并实现抖音效果。效果如下:MediaCodec 为Android 的硬编,在一些快速解码设备,我们都是使用MediaCodec,如果你对 MediaCodec 如何解码不熟悉,可以先阅读。

2023-01-03 10:33:53 3858 5

原创 Android 音视频编解码(三) -- 视频编码和H264格式原理讲解

视频编码标准其实有很多,而大名鼎鼎的就是 H264 了,可以说是最常用,最普遍的视频编码格式。其实除了H264,还有H265,H264和H265都是国际标准化组织(ISO)和国际电信联盟(ITU)开发的编码标准,而VP8、VP9 和 AV1是谷歌开发的编码标准,H264 和 H265 是需要专利费的,所以VP8、VP9 和 AV1(都是免费)也是谷歌为了对抗他们高昂专利费而开发出来的。上面讲到了视频编码的原理,这里我们通过H264来了解视频编码中的码流结构,以及H264 是如何解决4中冗余信息的。

2022-12-30 11:39:35 4488

原创 Android 音视频入门/进阶教程

作为安卓开发仔,对音视频这块,一直是比较感兴趣的,所以,本着学习和记录的态度,我也把我所学的知识记录起来,希望对想音视频感兴趣的小伙伴有所帮忙。

2022-12-29 11:36:00 2725 2

原创 Android OpenGL ES 学习(十一) –渲染YUV视频以及视频抖音特效

通过简单的配置,实现抖音特效

2022-12-26 14:39:59 3955

原创 Android OpenGL ES 学习(十) – GLSurfaceView 源码解析GL线程以及自定义 EGL

前面说到,GLSurfaceView 帮我们把 egl 的配置都弄好了,优点是使用简单,缺点是当我们想共享同个 EGL context,实现同个场景,不同 surface 的渲染时,GLSurfaceView 就使用了。所以,我们自定义自己的 GLSurfaceView。init {

2022-12-22 11:29:49 3050

原创 Android OpenGL ES 学习(九) – 坐标系统和实现3D效果

实现OpenGL 3D效果

2022-12-15 14:29:34 4215 6

原创 Android OpenGL ES 学习(八) –矩阵变换

今天学习OpenGL 的矩阵变换,实现平移,缩放和旋转的效果

2022-12-15 12:05:12 2009

原创 Android OpenGL ES 学习(七) – 纹理

上一章中 Android OpenGL ES 学习(六) – 使用 VBO、VAO 和 EBO/IBO 优化程序,我们已经学习了 VBO、VAO 和 EBO/IBO 的知识,这一章,一起来学习 OpenGL 纹理相关的只是。今天要完成的效果,加载一张图片:可能第一印象是一张二维图片,如下图:但在OpenGL的世界里,这里有点不一样,它与光栅化有点像,光栅化过程中,会切成一片片小片段,然后片段着色器中把颜色值赋给图元表面。纹理也相似,它包含一张或多张图片信息(也可以是其他数据)的一个 OpenG

2022-12-03 17:58:43 3467

原创 Android OpenGL ES 学习(六) – 使用 VBO、VAO 和 EBO/IBO 优化程序

OpenGL 学习教程上一篇,我们已经完成了 三角形的渐变色处理。这一章,我们学习 GL3.0 特有的 OpenGL 缓存对象,VBO ,VAO 和 EBO。这一章稍微有点吃理解,建议多看多想。

2022-12-02 18:23:43 3337 2

原创 Android OpenGL ES 学习(五) -- 渐变色

OpenGL 学习教程这次要完成的效果:前面的代码中,我们的颜色是写死一种的,如何实现上面的渐变色呢?这里就需要用到光栅化:再复习一下光栅化的概念:它会图元映射成屏幕上相应的像素,生成供片段着色器使用上色的片段。前面说道,顶点数据不止包含位置,还有其他信息,所以,在绘制顶点位置的时候,也传递顶点颜色,由 OpenGL 实现栅格化的效果。这里,你可能会有疑惑,传递了三个颜色,也应该也是三个颜色啊,怎么会有渐变色呢?带着疑问,我们来试试。

2022-12-01 16:34:27 3422 2

原创 Android OpenGL ES 学习(四) -- 正交投影

OpenGL 坐标说明和变形问题

2022-11-26 16:17:28 2626 3

原创 Android OpenGL ES 学习(三) -- 绘制平面图形

上一章中,已经对 OpenGL 的编程语言 GLSL 和渲染模式有了一定的了解,今天,将运用之前的知识,完成一些平面图形的操作。效果如下:如果你对 OpenGL 的基本概念或者渲染流程不清晰,建议先看和这两篇文章。先直接上两张图:可以看到,我们需要先编写着色器的代码,才能把 OpenGL 的数据,传递到渲染管线上。

2022-11-26 14:53:02 3235

原创 Android OpenGL ES 学习(二) -- 图形渲染管线和GLSL

上一章,我们学习了 OpenGL 的基本知识,这一章,一起学习OpenGL的渲染模式和渲染语言GLSL。

2022-11-26 11:10:49 3899

原创 Android OpenGL ES 学习(一) -- 基本概念

最近在研究 SurfaceView 和 TextureView,发现栅格化这东西,一直没怎么搞明白,一搜都是关于 OpenGL 的,没办法,当初也是要学习这个,现在重试拾起。之前接触 OpenGL ,是主要解决一个渲染模糊问题,使用 OpenGL 就不会,而使用 SurfaceView 则不会,但存在延时问题,一直没扣明白,这个系列,期待重新认识 OpenGL。Android 图形学这东西,真的好多东西啊 - -。

2022-11-20 16:23:27 4754

原创 Android WebRTC 入门教程(二) -- 模拟p2p本地视频传输

源码工程: https://github.com/LillteZheng/WebRTCDemo今天要实现的效果:上一章中,我们学习了 PeerConnectionFactory ,VideoCapturer 等知识实现了相机的预览。

2022-09-30 15:59:47 3652 1

原创 Android WebRTC 入门教程(一) -- 使用相机

让你快速实现安卓上 webrtc 的开发

2022-09-29 17:20:16 6718

原创 Android 添加蓝牙遥控按键

一. 蓝牙遥控器的原理本文源码给予 amlogic 9.0蓝牙遥控器的原理如下图从流程上我们可以发现,我们遥控器的码值被转化了几次: HID码值–→Linux event–→ 根据Vendor、Product转化为Android事件。二. 按键知识适配可以发现,一些按键不可用,说明按键值为添加和适配。通过 getevent 可以拿到其中一个按键的值:****从上图可以知道名字:蓝牙遥控器的名字为 BT_Smart_RC001007004a :其中,高位为 usage page (

2021-10-21 19:55:42 6774

原创 AlarmManager set 设置定时闹钟,延时执行的问题

背景:使用 AlarmManager 给系统设置定时关机,延时了1个多小时的才执行的问题接到问题后,首先排查了代码,看到代码使用的是 Android 自带的 AlarmManager 设置一个闹钟Pen,当时间到了, /** * 设置定时关机 * @param time 多少ms后关机 */ fun shutDownSystem(time: Long) { val intent = Intent(WebConfigApi.context,Shu

2021-09-08 11:53:58 954

原创 小米MIUI NFC、WIFI权限排查踩坑

背景: 小米手机使用NFC时,会提示是否使用NFC弹窗,如果点击拒绝,则下次碰 NFC 无反应。一. 现象NFC 的使用非常简单,只需要在 AndroidManifest.xml 上 注册权限即可:<uses-permission android:name="android.permission.NFC" />但 MIUI 可能考虑安全问题,NFC 有使用权限限制,如:经排查,安卓官网并没有对 NFC 使用有特殊权限申请,其他手机使用 NFC 无该情况。二. 问题排查既然涉及权

2021-09-08 11:15:37 2561

原创 Android 动态修改 html 文件的字符串

有时候,需要动态修改 html 文件的字符串,如多语言,或者一些老版本的兼容。思路比较简单,就是把 html 的字符串读出来,替换某个字符串就好了。需要注意的时候,在读的时候,需要保留 html 的换行br,避免格式不对的问题,简单的代码如下: private fun replaceHtmlMsg(htmlFile: File) { val fr = FileReader(htmlFile) val br = BufferedReader(fr)

2021-07-19 15:20:25 702

原创 设计模式之美学习笔记 -- 部分概念简记

封装、抽象、继承、多态分别可以解决哪些编程问题封装:特性: 控制访问权限意义: 暴露有限的接口,达到业务隔离,只提供必要的操作,隐藏信息,保护数据,提高类的易用性。抽象:特性:隔离具体实现意义:让用户不关注具体实现,通过接口隔离,达到解耦继承:特性:继承父类的共有方法意义:提高代码复用,但过度集成,容易造成可读性差,维护性变差,提高复用多态:特性:子类实现父类的不同方法意义:重写逻辑,实现了“只修改关闭,对扩展开放”的设计原则,提高复用性面向对象编程(面向对象编程语

2021-04-26 06:37:00 145

原创 Android 音视频开发(六) -- Android Mediaprojection 截屏和录屏

Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音);AudioTrack播放音频Android 音视频开发(二) – Camera1 实现预览、拍照功能Android 音视频开发(三) – Camera2 实现预览、拍照功能Android 音视频开发(四) – CameraX 实现预览、拍照功能Android 音视频开发(五) – 使用 MediaExtractor 分离音视频,并使用 MediaMuxer合成新视频(音视频同步)音视频工程这章学习Android

2021-04-14 15:53:55 6465 12

原创 添加 framework.jar,混淆失败(不混淆framework.jar)

开发一些系统相关的类时,常常需要引入 framework.jar 去调用一些 hide 的类或 api,一般的做法就是在 libs 中加入该 jar 包,如:如果你要调用,还需要在 project 的build.gradle 添加: gradle.projectsEvaluated { tasks.withType(JavaCompile) { //设置jar相对包路径或绝对路径 options.compilerArgs.add('

2021-01-28 17:36:03 516 1

原创 Mac 环境下 Android 使用Jenkins 构建自动化打包

最近在看使用 jenkins 进行自动化打包,现在记录一下,方便后面查询。这里的环境为 Mac ,所以window的,可以看后面构建的部分。一. 下载安装首先,直接去到官网 下载,选择左边稳定办版找到你的环境,我这里为 mac,官网推荐的方式是使用 brew如果你的电脑还未安装 brew ,可以通过这篇文章Mac必备神奇homebrew下载成功之后,执行 jenkins-lts 就可以启动 jenkins了,接着,在浏览器上输入 localhost:8080,就会出现jenkins 的页面,然

2020-12-28 10:54:17 1363 1

原创 Android 快速获取热点名称密码

目前很多厂商都会使用 wlan1 来配置热点,这样使用Android原生的接口,是拿不到热点名称和密码的,但使用命令就可以快速拿到;首先,为避免权限问题,先adb rootadb remount然后 adb shell 进入设备,输入以下指令,找到热点配置信息busybox ps | grep hostapd然后使用 cat 看看 /data/misc/wifi/hostapd.conf可以看到,名称和密码都能看到了。你可以使用File file = new File(confP

2020-12-03 18:02:32 2486

原创 Kotlin -正确退出forEach

最近在代码评审的时候,竟然看到同事使用 kotlin 的forEach,他以为使用 return@forEach 就可以退出了,相当于 break,但其实并不是,只是相当于 for 的 continue。一. 问题复现那么,如何正确退出 forEach呢?先看这段代码,打印出什么?listOf(1, 2, 3, 4, 5).forEach { if (it == 3) return@forEach print(it)}打印如下:1245嗯,看起来就相当于 for 的

2020-11-07 12:11:33 4038 1

原创 Git 实用笔记(一) log实用笔记

一. git add当我们修改了某个文件,都需要 使用 git add log.txt 把这个文件添加到缓冲区中,使用 git add . 添加所有;需要注意的是, add 的原理是add 这个文件修改的内容,而不是文件名二. commit 相关当 git add 文件之后,可以直接使用 git commit -m “说明” 直接提交...

2020-10-25 12:08:36 339

原创 Android 蓝牙开发(三) -- 低功耗蓝牙开发

前面已经学习了经典蓝牙开发,学习了蓝牙的配对连接和通信,又通过 配置 A2DP 文件,实现手机和蓝牙音响的连接和播放语音。这篇,我们来学习蓝牙开发的最后一章,低功耗蓝牙 BLE,也就是我们常说的蓝牙 4.0 。今天要完成的效果如下: 中心设备 外围设备 一. 简介与传统蓝牙不同,低功耗蓝主要为了降低设备功耗,支持更低功耗(如心率检测仪,健身设备)等设备进行通信。Android 在 4.3(API 18) 后将低功耗蓝牙内置,并提供对应的

2020-09-04 15:10:57 4347 10

原创 Linux 使用 vim命令行

一、介绍二、Vim 之 移动、缩进、跳转2.1 移动首先,先知道 vim 中,光标的移动;要知道 vim 与我们键盘的分布是不同的,

2020-08-20 16:27:59 302

原创 Android 蓝牙开发(二) --手机与蓝牙音箱配对,并播放音频

Android 蓝牙开发(一) – 传统蓝牙聊天室项目工程BluetoothDemo上一章中,我们已经学习了传统蓝牙的开发,这一章,我们来学习如何让手机与蓝牙耳机、音箱等连接配对,并实现音频传输。一、基础知识前面在 Android 蓝牙开发(一) – 传统蓝牙聊天室 的文章中,我们已经对蓝牙知识有个基本认识。而且从 Android 3.0 开始,Bluetooth API 支持蓝牙配置文件,蓝牙配置文件是适用于设备间蓝牙通信的无线接口规范。举个例子:免提配置文件。如果手机要与无线耳机进行连接.

2020-08-06 22:12:37 6282 2

原创 Android 蓝牙开发(一) -- 传统蓝牙聊天室

项目工程BluetoothDemo一、蓝牙概览以下是蓝牙的介绍,来自维基百科:蓝牙(英语:Bluetooth),一种无线通讯技术标准,用来让固定与移动设备,在短距离间交换数据,以形成个人局域网(PAN)。其使用短波特高頻(UHF)无线电波,经由2.4至2.485 GHz的ISM频段来进行通信[1]。1994年由电信商爱立信(Ericsson)发展出这个技术[2]。它最初的设计,是希望创建一个RS-232数据线的无线通信替代版本。它能够链接多个设备,克服同步的问题。简单来讲,就是蓝牙功能支持设备以

2020-08-06 17:18:26 3457 6

原创 Android 10 扫描蓝牙失败问题

最近在开发蓝牙,发现在 Android 10 的设备上,只能扫描到已配对的设备,没匹配的设备,扫描不到,就广播没回调到;BLE 低功耗也扫描不到。根据官网,已经添加了:ACCESS_FINE_LOCATION 精准定位了还是不行,google 了一波,发现在https://github.com/E。ddyVerbruggen/nativescript-bluetooth/issues/173 找到答案开启gps后,就扫描到其他设备了,强制开启 gps 有点不优雅,可以添加个提示,让用户自己去开启

2020-07-30 10:55:17 1864

原创 Android 音视频编解码(二) -- MediaCodec 解码(同步和异步)

音视频 系列文章Android 音视频开发基础Android 音视频编解码(一) – MediaCodec 初探音视频工程上面的文章中,已经对 MediaCodec 有个感性的认知,这一章,来学习 MediaCodec 的解码功能一、同步解码一般本地视频,我们可以通过同步解码来实现,因为视频播放,除了解码,根据 PTS 去根据视频的帧率来播放视频,不然如果解出来就显示,就那就是快进了。1.1 分析视频从 Android 音视频开发(五) – 使用 MediaExtractor 分离音视频.

2020-07-27 22:54:45 15309 13

原创 Android 音视频编解码(一) -- MediaCodec 初探

音视频 系列文章Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音);AudioTrack播放音频Android 音视频开发(二) – Camera1 实现预览、拍照功能Android 音视频开发(三) – Camera2 实现预览、拍照功能Android 音视频开发(四) – CameraX 实现预览、拍照功能Android 音视频开发(五) – 使用 MediaExtractor 分离音视频,并使用 MediaMuxer合成新视频(音视频同步)前面几章,我.

2020-07-24 14:47:21 10440

原创 实现一个可定制化的流布局 FlowLayout

本文已授权玉刚说公众号FlowLayout 继承于 ViewGroup ,可以快速帮您实现 Tablayout 以及 Label 标签,内含多种效果,帮您快速实现 APP UI 功能,让您专注代码架构,告别繁琐UI。如果你也想自己写一个,可以参考以下几篇文章实现一个可定制化的TabFlowLayout(一) – 测量与布局实现一个可定制化的TabFlowLayout(二) – 实现滚动和平滑过渡实现一个可定制化的TabFlowLayout(三) – 动态数据添加与常用接口封装实现一个可.

2020-07-14 17:37:14 917

原创 Android 音视频开发(五) -- 使用 MediaExtractor 分离音视频,并使用 MediaMuxer合成新视频(音视频同步)

音视频学习demo,正在升级打怪,加油鸭~Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音);AudioTrack播放音频Android 音视频开发(二) – Camera1 实现预览、拍照功能Android 音视频开发(三) – Camera2 实现预览、拍照功能Android 音视频开发(四) – CameraX 实现预览、拍照功能工程:音视频demo前几章,我们已经为音视频学习打下了一定的基础。这一章,我们来学习如何使用 MediaExtractor.

2020-07-14 17:30:40 5654

原创 Android 音视频开发(四) -- CameraX 实现预览、拍照功能

音视频学习demo,正在升级打怪,加油鸭~Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音);AudioTrack播放音频Android 音视频开发(二) – Camera1 实现预览、拍照功能Android 音视频开发(三) – Camera2 实现预览、拍照功能一. Camerax 简介在前面两章中,我们已经学习了 Camera1 Android 音视频开发(二) – Camera1 实现预览、拍照功能 和 Camera2 Android 音视频开发(三).

2020-07-13 20:11:19 7299 5

原创 Android 音视频开发(三) -- Camera2 实现预览、拍照功能

音视频系列文章:Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音);AudioTrack播放音频Android 音视频开发(二) – Camera1 实现预览、拍照功能工程:VideoDemo上一章,已经我们已经用 Camera1 实现了预览和拍照的功能,但也说到,在API21的时候,Camera1已经被标注为弃用,因为它的API功能和灵活性满足不了现在日益复杂的相机开发了,所以在 API21之后,引入了 Camera2 ,参考:https://devel.

2020-07-13 10:34:22 5186 5

mvp 升级库

详细看这篇文章 :http://blog.csdn.net/u011418943/article/details/70562580

2018-03-17

android 静默安装与卸载,(包含正常安装与卸载)

android 静默安装与卸载,(包含正常安装与卸载) 博客地址:http://blog.csdn.net/u011418943/article/details/69568657

2017-04-07

线程下载图片,并用lurcache缓存

线程下载图片,并用lurcache缓存

2016-11-02

空空如也

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

TA关注的人

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