自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bjxiaxueliang的CODING技术小馆

技术分享为主,Android、OpenGLES、Vulkan等领域学习笔记与经验总结,也会不定期分享对技术行业前景的思考和分析。

  • 博客(361)
  • 资源 (41)
  • 问答 (1)
  • 收藏
  • 关注

原创 App性能优化——内存、CPU、耗电、启动时间指标获取分析

考虑到既然是优化性能,那首先要获取App的相关性能指标,比如: 内存占用、CPU利用率、App启动时间、App耗电量等情况,获取以上各指标后,才能针对性分析确定是否存在优化的可能。

2021-06-15 09:17:14 5208 4

原创 一文读懂 微内核

2019年8月9日华为 余承东 发布HarmonyOS 1.0,HarmonyOS的发布将一个计算机领域内非常专业的词带到了广大公众的视线内,这就是 微内核 。

2021-05-14 18:46:38 1899

原创 一文了解 APK瘦身属性android:extractNativeLibs

android:extractNativeLibs属性瘦身APK先描述一下结论:android:extractNativeLibs = true时,gradle打包时会对工程中的so库进行压缩,最终生成apk包的体积会减小。但用户在手机端进行apk安装时,系统会对压缩后的so库进行解压,从而造成用户安装apk的时间变长。关于android:extractNativeLibs默认值设定方面,若开发人员未对android:extractNativeLibs进行特殊配置:minSdkVersion &

2021-03-26 18:54:14 3260 4

原创 Android R(Android 11 API 30) 新特性分析及适配指南

Android R(Android 11 API 30)于2020年9月9日正式发布,随国内各终端厂商在售Android设备的版本更新升级,应用软件对Android R 版本的兼容适配已迫在眉睫。

2021-03-12 15:23:52 5555 1

原创 一文读懂 URLEncode:URL编码原理解析

使用浏览器进行Http网络请求时,若请求query中包含中文,中文会被编码为 `%+16进制+16进制`形式,但你真的深入了解过,为什么要进行这种转义编码吗?编码的原理又是什么?

2021-02-23 20:58:26 7175

原创 一文读懂GBA认证流程:移动终端认证和网络安全连接的保障

GBA(Generic Bootstrapping Architecture)是一种用户认证机制,目前多用于运营商相关业务。在数据相关业务中,客户端与应用服务器(NAF)交互过程时,进行用户认证鉴权。`应用服务器NAF`与`基于SIM卡的终端设备应用`之间建立共享的`用户秘钥(Ks_NAF)`,并利用该共享秘钥实现用户认证,即GBA。

2020-12-21 22:32:36 6850 3

原创 一文读懂 HTTPS :HTTPS握手与TLS证书链校验

HTTPS协议详解从事移动互联网软件开发的小伙伴肯定了解:自Android 9.0开始,应用程序的网络请求默认使用https;基本是同期苹果IOS在应用网络请求方面,也强制使用https禁止http。这一期间如果你去面试,不了解Https的握手过程,都不好意思讲工资。本人一个普通程序员,项目期间工期紧张,并未抽出时间详细了解Https网络请求过程中TLS握手过程,因此这件事一直在我的待办记录中…这篇文章以Wireshark抓包,详细了解Https请求中TLS的握手过程 与 客户端证书校验过程。H

2020-06-23 17:09:01 1962

原创 一文详解 ArrayDeque 双端队列使用及实现原理

deque(double-ended queue)双端队列,是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。

2020-06-04 14:51:07 1311 1

原创 一文详解 TCP与UDP协议:深度解析与场景应用

本文要介绍的TCP与UDP协议是TCP/IP 协议簇的核心成员,而TCP/IP协议簇是 Internet 的基础,也是一系列网络协议的总称。如:TCP、UDP、IP、FTP、HTTP、ICMP、SMTP等都属于TCP/IP协议族内的协议。这些协议在计算机网络中自上而下被划分为四层:应用层、传输层、网络层和链路层。

2020-05-19 21:23:53 3524 3

原创 一文详解 常见开源协议

日常从Github拷贝代码过程中,也要抽空了解一下,我们拷贝的代码在商用上是否存在风险。版权保护方面,虽然相关法规尚有待完善,但在研发商用软件过程中,作为软件开发者还是很有必要了解一下,我们平时使用的`开源组件/框架`都涉及到了哪些开源协议,以避免今后的法律风险。

2020-05-15 10:58:04 2027 2

原创 一文详解SDP协议:多媒体会话参数与媒体流描述协议

SDP用于在互联网上传输多媒体会话的配置信息,常见于音视频、实时通信会话等。SDP协议提供一种灵活且可扩展的机制,通过在会话的参与者之间交换和传递SDP会话描述信息,实现多媒体会话参数与配置的协商和管理。这种机制为多媒体会话的协商与管理提供了完备的解决方案。

2020-03-07 22:16:29 4873 1

原创 一文详解CPIM协议:IM服务网关互联互通的桥梁

CPIM (Common Presence and Instant Messaging) 是一种应用于不同IM即时通信协议中,规范与描述消息体内容的通用消息格式,其消息格式由 RFC3862 规范 。CPIM消息体格式的定义是为了实现不同即时通讯协议之间的互操作性,让不同的即时通讯协议服务之间可以互联理解和互相交流。

2020-03-07 17:17:21 3942

原创 一文读懂 SIP 协议:构建现代通信的基石

SIP是由IETF制定的多媒体通信协议。广泛应用于CS、NGN以及IMS的网络中,可以支持并应用于 语音、视频、数据等多媒体业务,同时也可以应用于Presence(呈现)、Instant Message(即时消息)等特色业务。可以说,有IP网络的地方就有SIP协议的存在。`SIP是类似于HTTP`,SIP可以减少应用特别是高级应用的开发时间。由于`基于IP协议的SIP利用了IP网络`,固定网运营商也会逐渐认识到SIP技术对于他们的远意义。

2020-03-04 20:11:27 10956 1

原创 一文读懂 HTTP 协议:报文结构及网络数据包举例

HTTP(HyperText Transfer Protocol)超文本传输协议。其`最初的设计目的是为了提供一种发布和接收HTML页面的方法`。HTTP是一个`客户端(用户)`和`服务端`之间请求和应答的标准。

2020-02-27 17:55:40 3667

原创 一文详解 Android状态机StateMachine 使用方式及实现原理

`StateMachine`不是`Android SDK`中的相关API,是存在于`frameworks`层源码中的一个Java类。通过这篇文章探究一下其使用方式以及实现原理。

2020-02-22 16:20:56 6888 2

原创 一文分析 mp4对比m3u8 第一帧加载慢的原因

公司要求对视频的 秒开率(1秒内成功加载的播放数 / 播放总数)、失败率 (播放失败的次数 / 播放总数) 等进行优化。经过线上AB测试发现,`m3u8视频(第一段切片为1~3秒)`在秒开率、失败率等性能指标上均优于`普通mp4视频`。这里探究一下,m3u8视频(第一段切片为1~3秒) 在秒开率上均优于 普通mp4视频 的原因。

2019-12-03 16:41:28 7269

原创 一文详解微信视频通话、抖音视频回显实现方案

2014年曾经做过一款类似当今“抖音”的短视频软件,叫“魔力秀”。可以说和现在的抖音基本是一样的,但因为“魔力秀”出生过早,加上投资人不看好,注定无法成长为一棵参天大树,最终只发了一个版本就结束了。当时“魔力秀App”的视频回显模块是我设计实现的,所以就有了这篇文章。事过多年,将这篇文章拿出来整理,因为这项技术依然不过时,反而被广泛应用...

2019-11-30 19:43:20 1306

原创 Android Q(Android 10 API 29)新特性及适配指南

在Android 10开始版本中,官方的改动较大,相应的开发者适配成本还是很高的。这里按照`2019.11.11 google android q workshop`流程,大概说明一下Android Q适配需要注意的内容。虽然是大概介绍,但应该是目前最全的适配攻略了...

2019-11-18 16:47:26 3328 1

原创 Android Q 深色主题

从Support Library 23.2.0 开始,AppCompat 新增了主题:`Theme.AppCompat.DayNight`。其允许APP在 `深色主题` 和 `亮色主题` 之间切换;可以大幅减少耗电量(`OLED显示屏`的设备上,`深色主题`较`亮色主题` 有更加持久的续航能力);改善弱视以及对强光敏感的用户的可视性;让所有人都可以在光线较暗的环境中更轻松地使用设备,从而提升用户体验。

2019-10-23 21:38:53 3575 3

原创 一文详解 NanoHttpd 微型服务器原理

`NanoHttpd`仅有一个Java文件的微型Http服务器实现。其方便嵌入式设备(例如:Android设备)中启动一个本地服务器,接收客户端本地部分请求;应用场景也非常广泛,例如:本地代理方式播放m3u8视频、本地代理方式加载一些加密秘钥等。

2019-08-29 16:51:47 1695

原创 一文详解 m3u8视频格式与视频秒开优化

秒开指的是,一秒内成功加载的播放数/播放总数。本意是想对比一下m3u8与mp4视频格式,并了解m3u8格式优缺点,以确定一个大概优化方向。但对m3u8做简单了解后,觉的m3u8可能是一个优化方向。

2019-04-11 14:25:33 15971

原创 一文分析 Only fullscreen opaque activities can request orientation 报错原因及解决方案

今天在三星S8上遇见一个奇葩问题`Only fullscreen opaque activities can request orientation`,探究一下Android源码,出现这个错误的原因,以及解决方案。

2019-03-29 15:28:38 2913

原创 How to handle background services in ANDROID O?

How to handle background services in ANDROID O?如何处理Android O的后台Service前段时间公司项目中做Android O的适配。在了解Android O新功能时,看到这个文章,虽然介绍的是Android O的预览版,但读了一遍感觉不错,记录下来。顺便翻译一下(不翻译大家肯定也看得懂,只是觉得单纯转一下太low了)…原文地址:How ...

2018-10-29 11:41:49 805

原创 一文详解 RSA 非对称加密算法

非对称加密算法指的是 加、解密使用不同的密钥,一把为公开的公钥,另一把为私钥。 公钥加密的内容只能由私钥进行解密,反之由私钥加密的内容只能由公钥进行解密。也就是说,这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容只能由对方进行解密。

2018-10-17 17:49:28 3319 9

原创 一文详解 Android multidex 使用方式及实现原理

在Android中一个Dex文件最多存储65536个方法,也就是一个short类型的范围。但随着应用方法数量的不断增加,当Dex文件突破65536方法数量时,打包时就会抛出异常。为解决该问题,Android5.0时Google推出了官方解决方案:MultiDex。

2018-10-16 15:55:52 33242 2

原创 一文详解 ThreadLocal使用方式及实现原理

`ThreadLocal` 的作用与`volatile` 有些相反。`volatile`是为了保证多线程环境下数据的一致性;`ThreadLocal` 是保证了多线程环境下数据的独立性;

2018-09-26 17:44:31 394

原创 一文详解 Android asynctask使用方式(一)

AsyncTask在各版本中源码的实现方式不用,但有时我们又需要用到AsyncTask,那我们该怎么使用它呢?

2018-08-28 14:08:35 560

原创 一文了解 Android MediaPlayer buffer大小

前几天用`VideoView` (`MediaPlayer+SurfaceView`) 做一个类似于**抖音APP**的短视频Demo(**测试机型 Android8.0 小米6**),发现`MediaPlayer onPrepared`的时间非常长,好像把一个不到10M的视频全部缓存结束后,才回调`onPrepared`,开始视频播放。因此:学习一下MediaPlayer的buffer大小到底是多少;

2018-07-18 16:24:36 5141 1

原创 一文分析 BottomSheetDialogFragment使用方式及实现原理

分析 BottomSheetDialogFragment 使用方式及实现原理

2018-07-10 10:04:47 11917

原创 一文详解 BlockingQueue使用及实现原理

心血来潮,探究一下`BlockingQueue`的实现原理。

2018-06-22 15:32:07 923

原创 一文详解 RxJava2 使用及实现原理

RxJava—一个可以在JVM上运行的,基于观察者模式 实现异步操作的java库。其英文描述为:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java

2018-06-19 18:38:31 2809

原创 ARouter 源码学习

ARouter 源码学习官方文档: Android平台页面路由框架ARouter阿里巴巴Arouter github地址如下: ARouter gitHub 地址ARouter我的学习注释GitHub地址: ARouterArouter 组件化Demo: Android_Modularization_Demo强烈建议:阅读ARouter源码前,认真阅读 ARouter官...

2018-04-10 17:32:59 897

原创 一文详解 JsBridge 实现原理

JsBridge主要用于“JS与Native的通信”,众所周知Android 4.2以下的WebView存在addJavascriptInterface漏洞的问题,为解决这一问题国内很多知名大厂很早就在各自项目中集成了JsBridge。

2018-03-07 11:41:41 1710

原创 一文了解 Android Binder通信机制

Binder通信基础是Kernel的内存共享一个进程空间分为 `用户空间` & `内核空间(Kernel)`,即把进程内 `用户 & 内核` 隔离开来 。进程间,`用户空间的数据不可共享`。进程间,`内核空间的数据可共享`。`进程内 用户 与 内核 进行交互` ,Linux可使用`copy_from_user()`和`copy_to_user()`实现这两个跨空间拷贝,但Binder使用的方式又有所不同(后边会说道)。

2018-03-02 15:14:22 1235

原创 小团队Git分支管理

Android 客户端小团队Git管理前两天测试组同学问我,公司Android客户端5人小Team的Git版本是怎么管理的。想了想要不画一个时序图吧。Created with Raphaël 2.1.2MasterMasterDevDevFeature1Feature1Feature2Feature2HotFixHotFixMaster最新版本Tag为V5.0V5.1开发开始Maste...

2018-02-27 10:34:05 990 1

原创 一文详解 Http 短轮询、长轮询

早期的很多网站为具备数据推送能力,所在用的技术基本都是`HTTP轮询`。轮询是由由客户端每隔一段时间(如每隔5s)向服务器发出HTTP请求,服务端接收到请求后向客户端返回最新的数据。客户端的轮询方式一般为`短轮询`或`长轮询`。...

2018-01-09 12:04:44 6113 4

原创 一文详解 SparseArray、ArrayMap 实现原理

SparseArray与ArrayMap是Android提供的两个列表数据结构。SparseArray相比于HashMap采用的是,时间换取空间的方式来提高手机App的运行效率。而ArrayMap实现原理上也类似于SparseArray。

2017-08-16 19:33:26 2415

原创 Android内存占用——使用MAT、GIMP分析内存异常占用

Android开发时,面对内存的异常升高,我们使用MAT(Memory Analyzer Tool)分析Android内存时,可以发现大量的bitmap内存占用,但是很难定位究竟是哪张图片占用了内存,这里介绍一种查看bitmap的方法。

2017-08-15 18:09:26 1471

原创 一文学会 公开课3D勋章实现方案

opengl es 2.0中加载.obj 与 .mtl本来以为网上应该有兼容性较好的obj与mtl的java解析库,但在网上找了好多代码,发现其在加载obj与mtl中,基本都存在较大问题。网上代码主要分为了以下几个部分:mind3d 2011年就已停止维护(为opengl es1.0),并且在加载多图形上存在很大的不兼容(主要解析了obj,mtl没有解析)。其他一些obj解析代码,基本都是解析了

2017-08-10 13:37:44 5017 12

原创 一文详解 .obj 和 .mtl文件格式

obj文件是3D模型文件格式。由Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,适合用于3D软件模型之间的互导,也可以通过Maya读写。

2017-08-08 12:12:47 9537 2

Android端 网易公开课3D动画勋章 实现源码

Android端 网易公开课3D动画勋章 实现源码,使用OpenGL ES 2.0加载、展示3dmax导出的obj、mtl勋章文件,通过自定义的openel 动画引擎,进行3D勋章的动画展示。

2021-11-02

SIMalliance_OpenMobileAPI2_02.rar

Android于Android 9.0 引入了OMAPI相关实现,这篇文章是关于OMAPI的架构实现、API使用介绍实现文档。 Sim Alliance组织提供了一个标准接口规范Open Mobile API specification,使手机上层应用可以访问手机端不同的Secure Elements。

2021-07-30

Android tcpdump

Android tcpdump Version 4.9.3 / 1.9.1.

2020-10-14

capture.pcap

使用tcpdump抓包工具,抓包“https get请求百度主页”,生成的capture.pcap文件。 该文件可用wireshark打开,查看和学习 DNS解析步骤、TCP三次握手、TSL握手和秘钥协商 等过程

2020-06-12

SIP-RFC3428.doc

本资源为RFC3428中文翻译,其对应的原协议地址为:https://tools.ietf.org/html/rfc3428 。 想要了解Sip协议Message方法扩展由来、Pager Model通信方式、Pager Model通信方式的具体举例的同学,可以下载。

2020-03-07

QRcode.jar

java -jar QRCode.jar url=test image=qrcode.png save=/xiaxl/ 亲测可用

2019-05-21

MVP_RxJava_Demo

http://dev.qq.com/topic/5799d7844bef22a823b3ad44中介绍的, Android MVP框架

2016-07-29

glide_disklrucache

glide与UniversalImageloader均使用的sdcard缓存策略

2016-03-13

gradle多渠道打包的两种实现demo

gradle多渠道打包的两种实现demo

2016-01-27

ES_001_Triangle

win7下VS2013搭建opengl es 2.0的C++开发环境案例代码。详情请查看博客: http://xiaxveliang.blog.163.com/blog/static/2970803420151014104946451/

2015-11-14

Gson简单与复杂json数据解析案例

可实现简单json数据与复杂json数据解析,详情请看:http://xiaxveliang.blog.163.com/blog/static/297080342014102674623118/

2014-11-26

完善程序地图poi搜索

完善腾腾地图POI搜索1、自定义POI点选中图标2、自定义POI点详细信息弹框。详情请查看:http://xiaxveliang.blog.163.com/blog/static/297080342014102510537125/

2014-11-26

Android_surfaceView与layout屏幕适配总结

Android各种屏幕适配策略demo总结,文档介绍链接地址: http://xiaxveliang.blog.163.com/blog/static/2970803420149277310588/

2014-10-27

shader中uniform变量的if或for会降低帧率

文档介绍博客地址:http://xiaxveliang.blog.163.com/blog/static/29708034201492735228272/

2014-10-27

Xml本地格式化工具(Java代码显示,图形操作)

Xml本地格式化工具(Java代码显示,图形操作),使用详情:http://xiaxveliang.blog.163.com/blog/static/29708034201471044250517/

2014-08-10

Android用SAX2解析xml

一个android小demo,采用SAX2方式解析xml。详细介绍请看: http://xiaxveliang.blog.163.com/blog/static/2970803420147784312563/

2014-08-07

android静默卸载data/app下的应用程序

前提:android设备需已root 详情请看: http://xiaxveliang.blog.163.com/blog/static/2970803420146223547873/

2014-07-03

android静默卸载指定包名APP

代码模拟"uninstall + 包名"命令,详情请浏览地址: http://xiaxveliang.blog.163.com/blog/static/2970803420146223547873/

2014-07-02

百度地图附近商铺信息

通过百度地图API获取附近商铺信息,效果图请看: http://xiaxveliang.blog.163.com/blog/static/29708034201442035825239/

2014-05-20

Activity启动和退出动画

Activity启动和退出时的动画效果,动画为从右侧进入和从右侧退出

2014-05-09

png转pkm“Mali-Texture-Compression-Tool-v4Windows-x64”和“pkm.zip”资源

png转pkm“Mali_Texture_Compression_Tool_v4Windows_x64”和“pkm.zip”资源 1、Mali_Texture_Compression_Tool_v4Windows_x64 png转pkm工具(windows平台); 2、一组由Mali_Texture_Compression_Tool_v4Windows_x64生成的ETC1+Alpha的动画文件举例。

2024-08-13

OpenGLES2.0中加载".pkm图片资源"组成的“zip压缩包”,并以帧动画的渲染播放ETC1格式纹理数据

OpenGLES2.0中加载".pkm图片资源"组成的“zip压缩包”,并以帧动画的渲染播放ETC1格式纹理数据: 1、将png帧动画资源,通过MaliGPU Texture CompressionTool压缩为ETC1格式纹理(压缩后每一帧均包含“一个RGB的.pkm文件”和“一个alpha值的.pkm文件”); 2、将.pkm图片资源压缩为一个.zip的压缩包; 3、在Android中加载读取.zip文件,并通过OpenGLES2.0按帧动画的形式渲染播放一帧一帧的.pkm文件格式的ECT1压缩格式文件; 4、每一帧渲染都获取两个.pkm文件,分别加载为ETC1Texture纹理数据(一个获取RGB颜色值,一个获取Alpha值); 5、抖音、快手的直播画面中,送礼物特效可用该工程代码实现。

2024-08-08

Android工程OpenGL ES中YUV420转化RGB工程实现源码

1、通过Camera2获取Camera的YUV420图像数据; 2、将YUV420图像数据通过Shader语言,在GPU中转化为RGB; 3、在OpenGL ES中渲染最终的RGB纹理,实现图像预览。 4、本案例代码是: 一文详解微信视频通话、抖音视频回显实现方案:https://xiaxl.blog.csdn.net/article/details/103328195 一文学会 Opengl ES中YUV420与RGB转化:https://xiaxl.blog.csdn.net/article/details/72622236 技术博文的工程实现代码,具体实现可参考以上两篇技术文章。 5、当前App中GPU高效回显图像均通过该方案实现,具有较高的学习性。

2024-07-22

ExternalOES纹理数据 转换为 TEXTURE-2D纹理数据 工程代码

图形开发中,通常将TEXTURE_2D和TEXTURE_EXTERNAL_OES纹理分开使用,这种情况占据了80%的场景。然而,有时候也需要将TEXTURE_EXTERNAL_OES纹理转化为TEXTURE_2D纹理进行视频处理。这种情况,我们可以通过 如离屏渲染或FrameBuffer帧缓冲区对象,完成纹理数据的转化。 1. 首先,需创建一个OES纹理ID; 2. 完成OES纹理ID创建后,通过oesTexId创建一个图像消费者SurfaceTexture; 3. 通过SurfaceTexture创建Surface,将Surface对象传递给MediaPlayer,获取Sdcard中对应路径的视频帧数据获取; 4. 创建FRAMEBUFFER帧缓冲区,并绑定TEXTURE_2D空白纹理对象; 5. 将EXTERNAL_OES纹理渲染到FRAMEBUFFER帧缓冲区中; 6. 绘制渲染TEXTURE_2D纹理,完成纹理图像的显示; 文档介绍地址如下: https://xiaxl.blog.csdn.net/article/details/135137815

2023-12-21

OpenGLES渲染播放Sdcard中的视频资源

1、案例运行注意事项: 案例源码运行前,需向Sdcard如下路径存入测试视频:/sdcard/Android/data/com.xiaxl.glesvideo/files/video/demo.mp4 2、案例源码原理: a、在OpenGL ES中创建 samplerExternalOES 类型纹理,用于渲染展示视频图像; b、通过 samplerExternalOES 纹理创建一个 SurfaceTexture; c、通过 SurfaceTexture 生成一个 Surface; d、将该 Surface 绑定到 MediaPlayer 中; e、通过 MediaPlayer 解封装视频,并最终通过OpenGL ES渲染解封装后的视频图像,同时播放视频的声音;

2023-11-02

Android平台OpenGLES3将GL-TEXTURE-2D纹理id渲染到ImageReader提供的Surface上

效果目的: Android平台 将 GL_TEXTURE_2D纹理 渲染到 Surface 上 案例实现文章介绍: https://xiaxl.blog.csdn.net/article/details/131682521 技术实现流程大致如下: 1、OpenGLES3中加载GL_TEXTURE_2D纹理,生成纹理ID; 2、通过EGL构建EGLDisplay虚拟屏幕,并绑定ImageReader提供的Surface; 3、在EGL线程中,渲染GL_TEXTURE_2D对应的纹理图形; 4、在EGL线程中,完成渲染后,通过eglSwapBuffers方法交换缓冲数据; 5、在ImageReader中onImageAvailable方法中读取surface数据,保存为一张Bitmap; 6、将 步骤5 的Bitmap显示到ImageView上(用于验证纹理ID是否正常写入到Surface) 因实现流程较为复杂,技术难度要求较高,研究此案例代码花费时间较多,付费下载,谢谢。

2023-06-28

监听Android系统软键盘的弹出与关闭(案例代码)

代码来源: 从facebook React源码ReactRootView中抽离CustomGlobalLayoutListener,用于监听Android系统软键盘的弹出与关闭。 实现原理: 监听Android DecorView对应的GlobalLayout布局变化,从而判断是否弹出了软键盘。 其他: 案例demo名称为GlobalKeyboardChange,可直接运行; 软键盘弹出和关闭时,可同时回调 keyboardHeight 软键盘的高度值。

2023-06-20

TCP与TLS数据报文抓包

使用 tcpdump 抓包工具,抓取 “https get”请求数据包: 1、生成 wireshark 工具可读取的 capture.pcap 抓包文件; 2、学习 “DNS解析步骤”报文结构; 3、学习 “TCP三次握手”报文结构; 4、学习 “TLS握手与秘钥协商” 等过程。 详细介绍,可参考我的技术文章: 一文读懂 HTTPS 与 TLS证书链校验 https://xiaxl.blog.csdn.net/article/details/106927624 一文详解 TCP与UDP 协议 https://xiaxl.blog.csdn.net/article/details/106223354

2023-03-18

Android使用 jitpack 发布 maven 多渠道AAR依赖库 案例实现

网络上大量涉及 JitPack 的教程不可用; 经过两天的研究,分别实现了Gradle 6.1与Gradle 7.5两种Gradle版本,多渠道发布JitPack maven AAR依赖库的案例,案例分别为: + jitpack_MultiFlavorLibDemo_gradle_6_1 + jitpack_MultiFlavorLibDemo_gradle_7_5 并给出了详细的使用说明教程,详见如下地址: https://xiaxl.blog.csdn.net/article/details/129151720

2023-02-21

Android录制屏幕生成mp4文件

Android录制屏幕生成mp4文件: 1、运行环境要求: Android 5.0以上,无需ROOT; 2、案例实现方式: 使用MediaProjection构建虚拟VirtualDisplay,完成屏幕录制生成mp4文件保存到本地sdcard。 3、案例源码: 案例源码以实现录屏最小集的方式实现,注释充分,通俗易懂。

2022-07-07

Python3使用openpyxl、xlrd依赖库操作Excel案例源码

使用python3脚本实现如下功能: 使用 openpyxl 依赖库,详解.xlsx 新版Excel文件的读、写、设置行高、列宽、合并单元格等操作; 使用 xlrd 依赖库,详解.xls 旧版Excel文件的读取,并使用 xlutils.copy 依赖库修改Excel文件出最终的修订结果Excel; 详细文章介绍地址如下: https://xiaxl.blog.csdn.net/article/details/123910322

2022-04-15

Python3使用xlrd修改Excel数据映射关系

使用python3脚本实现如下功能: 根据映射关系数据,完善Excel表格中品牌与型号的对应关系,输出修改后的Excel。 使用 xlrd 依赖库,实现Excel数据的读写; 使用 xlutils.copy 依赖库,复制并修改Excel文件, 并输出最终的修订结果Excel。 详细文章介绍地址如下: https://xiaxl.blog.csdn.net/article/details/123910322

2022-04-01

Android12 SplashScreen使用案例代码下载

Android12 SplashScreen使用举例代码下载,运行效果 与 相关API使用介绍请参考博文: Android12适配指南——SplashScreen: https://xiaxl.blog.csdn.net/article/details/123522277 Android 12(API 31)引入了 SplashScreen 相关API,用于开发Android应用的启动页。 SplashScreen相关API的引入影响在Andorid 12设备上运行的所有应用。 若开发者未进行SplashScreen的适配工作,在应用冷启动和温启动时,可能会呈现两个启动页先后出现的情况(Android SplashScreen启动页 + Android应用自定义开发的启动页或引导页)。

2022-03-16

安卓Kotlin Coroutine协程使用案例代码

安卓 Kotlin Coroutine协程 使用方式代码举例: 包含GlobalScope 、CoroutineScope 详细使用代码举例,相关介绍文章,可参考: https://xiaxl.blog.csdn.net/article/details/123383727

2022-03-09

Android veridex 非SDK接口检测工具

1、Android非SDK接口检测工具(2022.02.16版本) 2、对应的官方地址为: https://android.googlesource.com/platform/prebuilts/runtime/+/master/appcompat

2022-02-16

Android平台 使用OpenGLES3.0实现纹理纹理、颜色混合

在Android平台,使用OpenGLES3.0实现纹理纹理、颜色混合代码实现举例。 具体案例文章讲解请见: https://xiaxl.blog.csdn.net/article/details/121634894

2021-12-15

Android平台 OpenGL ES3.0绘制点、线、三角形实现源码

Android平台,OpenGL ES3.0 点、线、三角形绘制方式源码实现举例。 相关绘制方式文章讲解请参考: https://xiaxl.blog.csdn.net/article/details/8873002

2021-12-10

Android平台OpenGLES生成使用Mipmap纹理

该案例代码为Android 平台OpenGL ES实现举例,有两个作用: 1、在Android平台,使用OpenGL ES通过加载灰度图,构建山地图形渲染效果; 2、使用 OpenGLES 生成与使用Mipmap纹理,构建远处模糊,近处清晰的效果。 具体案例文章讲解请见: https://xiaxl.blog.csdn.net/article/details/8873106

2021-12-08

OpenGLES三种抗锯齿实现案例

介绍Android OpenGL ES中,三种可用的抗锯齿实现方式,这里给出详细的代码实现。 文章介绍,请参考: https://blog.csdn.net/xiaxl/article/details/8873018

2021-12-06

Android使用MediaCodeC与OpenGL硬解码 录制mp4音视频实现源码

将Camera数据显示到OpenGL ES渲染的图像中,并通过MediaCodeC 将 OpenGL ES 缓冲数据,硬编码写入到 mp4 视频文件中,完成视频的录制。 文件介绍请见: https://xiaxl.blog.csdn.net/article/details/72530314 原理及实现步骤: 1、通过OpenGLES渲染Camera采集数据; 2、通过 MediaCodec.createInputSurface获取一个Surface; 3、通过EGL构建EGLDisplay并绑定Surface; 4、通过 EGL 线程中渲染GL_TEXTURE_EXTERNAL_OES对应的纹理ID; 5、在 EGL 线程完成渲染后,通过eglSwapBuffers交换缓冲,将EGL渲染内容交换到MediaCodeC给定的Surface中,从而完成mp4视频录制。

2021-11-02

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

TA关注的人

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