Android
文章平均质量分 75
MichaelX_Blog
这个作者很懒,什么都没留下…
展开
-
Android笔记:TabLayout去除文字点击选中背景色
Android开发去除TabLayout的默认点按背景色原创 2022-03-22 19:20:21 · 4486 阅读 · 1 评论 -
Android OpenGL ES:展示一张2d图片
前言本文的环境和条件:GLSurfaceView + OpenGL ES 2.0代码结构Activity视图使用GLSurfaceView;GLSurfaceView使用自定义GLSurfaceView.Render实现,(GLSurfaceView.setRender());在Render实现图片纹理化和渲染。代码Show the code自定义的GLSurfaceView.Renderer实现。public class BitmapRender implements GLSurfa原创 2022-01-07 10:39:20 · 5106 阅读 · 1 评论 -
Android踩坑小记:ndk版本与Android Gradle Plugin版本兼容
背景有一个项目需要由support迁移至AndroidX,使用Android Studio的Refactor-Migrate to AndroidX。提示需要升级AGP和Gradle版本。于是AGP就升级到了3.5.4,Gradle就升级到了5.6.2。由于项目陈旧,其中有一个moudle模块需要编译so,兼容版本是14(APP_PLATFORM := android-14),项目cpp和mk都还是旧的语法。本来没升级之前jenkins打包是没问题的,设置了ANDROID_NDK_HOME为14的版本目录原创 2021-12-15 11:35:07 · 4905 阅读 · 0 评论 -
Android踩坑小记:在onResume中申请权限
这里写自定义目录标题背景:不停弹出的Toast定位过程根本原因(转自下面相关链接)后续优化相关链接背景:不停弹出的Toast我们在某个页面的onResume中进行了权限的判断和申请,在权限拒绝的回调onRequestPermissionsResult中添加了一个Toast提示权限获取失败。结果发现权限被拒绝并且“拒绝后不再提示”,Toast不停弹出。同时页面的点击事件失效。定位过程log显示页面的onPause/onResume和onRequestPermissionsResult不停回调。排查on原创 2021-11-30 16:58:54 · 2743 阅读 · 0 评论 -
Android Parcelable反序列化报错笔记:java.lang.RuntimeException: Unmarshalling unknown type code at offset
Parcelable反序列化报错事件背景代码示意报错原理解决办法事件背景有个实体类,利用Parcelable序列化保存在了本地,在新版本上新增了一个字段后,反序列化取数据时,报错如下:java.lang.RuntimeException: Parcel android.os.Parcel: Unmarshallingunknown type code xx at offset xx代码示意// 旧版本数据结构public class ParcelableObject implements原创 2021-09-01 14:23:14 · 2776 阅读 · 0 评论 -
Android笔记:OpenGL ES与EGL的关系与实例
简介OpenGL 是跨平台的、专业的图形编程接口,而接口的实现是由厂商来完成的。OpenGL使用这些接口绘制完成后,需要把数据渲染到屏幕上,就需要EGL来接手这部分工作。EGL:全称Embedded Graphic Interface。是 OpenGL ES 和底层 Native 平台 视窗系统之间的接口,如下图所示。EGL介绍EGL接口中含有3个对象,如下图所示:其中:Display(EGLDisplay) 是对实际显示设备的抽象,也就是屏幕Surface(EGLSurface原创 2021-03-18 16:30:36 · 786 阅读 · 0 评论 -
小米4开启太极·阳
机型小米4有很多版本,手中手机后面的入网许可证写着的是TD-LTE,系统设置中的名称为:MI4LTE刷入开发版Rom小米4 miui官网rom地址:小米4 小米4-电信3G版/移动版/联通版小米4 miui rom官方下载地址:miui_MI3WMI4W_8.9.13_8001b58f3b_6.0.zip按照官方刷机教程刷入开发版rom,刷入前记得双清。获取root权限刷完rom后,打开安全中心-应用管理-权限管理-root权限开启刷入第三方recovery...原创 2020-07-08 17:43:18 · 2066 阅读 · 0 评论 -
Android笔记:AlbumSaver图片视频保存工具类
背景Android中,有时需要操作生成一些图片或者视频,但不是你生成保存了就可以的,如何让生成的图片或者视频文件让其他app应用检索到,也是需要考虑的一个问题,下面这段代码是摘自某sdk demo的源码,刷新媒体数据库的方式让其他app可以方便的读取到港生成的图片或者视频文件,兼容各个Android版本。代码块AlbumSaverimport android.content.ContentResolver;import android.content.ContentValues;import an转载 2020-07-06 17:58:08 · 580 阅读 · 3 评论 -
在IDEA/Android Studio中调试Gradle Plugin插件
本文转载自:milovetingting《在Android Studio中调试Gradle插件》http://www.milovetingting.cn/2020/02/25/Android/%E5%9C%A8Android%20Studio%E4%B8%AD%E8%B0%83%E8%AF%95Gradle%E6%8F%92%E4%BB%B6前言在开发Gradle插件时,经常会需要通过调试来排查问题,如果只使用日志输出来定位的话,效率不高,可以通过单步调试来定位问题。关于调试插件的资料,网上比较多,最终转载 2020-05-13 09:51:45 · 1813 阅读 · 0 评论 -
AndroidNetworkWatcher:简化网络监听业务代码
前言Android开发中经常遇到需要监听网络变化的场景,比如播放,比如访问网络时进行断网提示,于是有了今天的AndroidNetworkWatcher。项目地址AndroidNetworkWatcher:https://github.com/xiong-it/AndroidNetworkWatcher技术原理主要是将网络变化监听广播进行了封装,同时定义运行时注解,在网络变化时调用业务层代...原创 2019-10-17 16:53:26 · 400 阅读 · 0 评论 -
Android开发:实现APP自动填写注册验证码功能
此技术的实现原理是“广播接收者”和“内容观察者”。 利用接收到短信时的系统发出的广播进行短信的读取,并利用正则表达式解析出短信中的验证码。原创 2016-03-28 14:29:15 · 10030 阅读 · 4 评论 -
Android开发:使用AutoInputAuthCode快速实现自动填写验证码
AutoInputAuthCode是一个帮助Android开发者快速实现自动填写验证码的类库原创 2017-05-09 13:47:59 · 4509 阅读 · 0 评论 -
Android:WebView加载url网页显示不完整解决办法
WebView基本用法如果想要在APP里面加载url网页,或者html代码,首先我们会想到WebView,它的基本用法...本文将为您解答如何解决网页加载不完整的问题。翻译 2016-01-20 18:29:35 · 32285 阅读 · 3 评论 -
Android Studio导入AOSP源码阅读
将AOSP导入Android Studio阅读学习翻译 2017-03-15 20:10:34 · 6632 阅读 · 3 评论 -
Ubuntu 14.04编译AOSP for Nexus/Pixel
虽说几年前博主在一家公司做机顶盒的时候总是需要编译Android源码,但是那时还没有手中的爱机:Nexus 6,又名shamu。今天我要为它刷入一个自己编译的Rom。拿起键盘就是干。原创 2017-03-12 22:06:36 · 6880 阅读 · 4 评论 -
Android开发:使用EasyPay打造全能移动支付框架
EasyPay是一个开源的聚合支付可定制化框架,目前已集成微信APP支付,支付宝APP支付SDK。银联支付(开发中)。Android开发者只需要简单调用EasyPay的几行代码,即可调起支付客户端,完成支付流程,得到支付结果。EasyPay宗旨:简单,易用,可扩展。原创 2017-03-22 15:05:18 · 8806 阅读 · 9 评论 -
Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多家成熟的移动支付提供商,阿里就是其中之一。 本文分享支付宝app支付sdk的接入。原创 2016-07-04 11:16:27 · 24543 阅读 · 15 评论 -
Android App支付系列(一):微信支付接入详细指南(附官方支付demo)
一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统显然是不明智的,国内已经有多家成熟的移动支付提供商,腾讯就是其中之一。梳理了下微信支付的接入,今天给大家分享下腾讯旗下的微信支付SDK的接入流程原创 2016-06-15 20:16:56 · 77382 阅读 · 33 评论 -
Android开发:视频播放横竖屏切换回忆笔记
前言话说这个功能还是两年多前做的,当时博客草稿箱留了这篇博客标题,已经很久了,但是到现在,依旧没有在网上看到一些相关的博客介绍,可能是太简单了?今整理博客,在这将自己的回忆记录成此,如有纰漏,还望斧正。原创 2017-03-07 21:32:47 · 3486 阅读 · 3 评论 -
Android:BLE智能硬件开发详解
前些年,智能硬件炒的挺火的,那今天,咱就来说说智能硬件那些事。BLE是智能硬件的一种通讯方式,通过BLE连接,iOS & Android手机和智能硬件就可以进行自定义的交互了原创 2017-03-09 20:14:04 · 8226 阅读 · 10 评论 -
Android开发:浅谈MVP模式应用与内存泄漏
最近博主开始在项目中实践MVP模式,却意外发现内存泄漏比较严重,但却很少人谈到这个问题,促使了本文的发布.原创 2016-11-24 12:15:06 · 10794 阅读 · 10 评论 -
Android:微信授权登录与微信分享全解析
前言在移动互联网浪潮中,联网APP已经把单机拍死在沙滩上,很多公司都希望自家应用能够有一套帐号系统,可是许多用户却并不一定买账:我凭啥注册你家应用的帐号?微博,微信,QQ几乎成了每个人手机中的必装应用,于是微信,微博,QQ说了:来来来,你们都可以用我家的帐号登录你家应用,只要你遵循OAuth2.0协议标准就行。原创 2015-09-17 10:49:29 · 37217 阅读 · 24 评论 -
玩机:解决小米手机锁屏忘记密码无法解锁
本文分享了如何在忘记密码的情况下解锁小米5手机,理论上适用于小米5后的更新机器。原创 2017-07-06 18:12:24 · 15357 阅读 · 1 评论 -
Android开发小记:编译ijkplayer以支持更多视频格式
今天分享下自己动手编译ijkplayer以支持avi,mpeg/mpg等更多格式视频。原创 2017-09-22 21:11:19 · 6990 阅读 · 2 评论 -
Android开发脚手架:扩展定制EasyShare进行社会化分享
EasyShare一个Android社会化分享脚手架,集成微信,qq,微博分享。作用利用抽象工厂,工厂方法,桥接模式搭配Java泛型封装的一个简单易扩展的分享组件,无法代替ShareSDK等商业化SDK使用,仅供开发交流探讨,不建议线上项目直接使用,可供开发者参考扩展。架构IShareContent:分享的内容接口定义,具有share行为,通过桥接模式将share行为交给IShare...原创 2019-04-18 18:13:32 · 1151 阅读 · 0 评论 -
Android OpenGL学习:最小系统绘制
文章目录最小系统目标整体流程编写着色器脚本定义三角形定义渲染器应用渲染器OpenGL管道概述(题外)最小系统目标利用OpenGL对应api在屏幕上绘制一个平面三角形。整体流程编写着色器脚本定义三角形定义渲染器应用渲染器编写着色器脚本vertex_shader.glsl 顶点着色器attribute vec4 vPosition;void main(){ gl_Po...原创 2019-03-14 16:47:36 · 759 阅读 · 0 评论 -
Android开发笔记:RecyclerView.addView()导致NullPointerException
背景最近想实现一个控件漂浮在Item上的效果,需要随着List滑动改变漂浮控件的位置。效果如下图:最开始的2种方案利用Window.addView(),滑动时updatePosition利用RecyclerView.addView(),滑动时改变漂浮控件floatView的layoutParams.margin第一种,利用Window更新位置稍微复杂点,放弃。第二种,Recycl...原创 2018-09-27 17:55:05 · 3192 阅读 · 0 评论 -
Android小记:自定义Button导致RecyclerView列表监听onScroll回调异常
onScroll回调一直被重复回调,导致程序运行异常原因排查解决原创 2018-10-12 11:01:48 · 508 阅读 · 0 评论 -
Android笔记:控件坐标一张图全解
注:图中蓝色小圆点代表的触摸事件View.getLeft()/Top/Right/Bottom:控件相对于父布局左上角的距离 Event.getRawX()/RawY:触摸点相对于屏幕左上角的坐标 Event.getX()/Y:触摸点相对于自身左上角的坐标...原创 2018-07-11 11:04:59 · 452 阅读 · 0 评论 -
Design Patterns in Android:装饰模式
前言装饰模式是干嘛的呢?它在项目中有哪些用途呢?装饰模式在Android源码中有哪些应用呢?本文将和读者朋友一起分享探讨装饰者模式在Android中的应用和实践。本文原创作者MichaelX。 CSDN博客:https://blog.csdn.net/xiong_it 掘金主页:https://juejin.im/user/56efe6461ea493005565dafd 知乎专栏:...原创 2018-06-13 14:12:52 · 594 阅读 · 0 评论 -
Design Patterns in Android:目录纲要
《Design Patterns in Android》(设计模式Android篇),旨在总结自己作为一名Android开发者,在摸索设计模式的过程中爬过的坑,因为很多设计模式的博文,书籍都是针对Java场景的,为了帮助一些Android开发者更贴切的理解和应用设计模式,博文将描述在Android源码中存在的设计模式,以及Android开发实践中如何应用设计模式原创 2017-01-16 21:15:43 · 2934 阅读 · 0 评论 -
Design Patterns in Android:责任链模式
前言非常抱歉,本系列博客长达半年没更新了,今日偶得灵感,更新一波《设计模式Android篇:责任链模式》。点击此处查看《Design Patterns in Android》系列其他文章。 本文原创作者MichaelX。 CSDN博客:http://blog.csdn.net/xiong_it 掘金主页:https://juejin.im/user/56efe6461ea4...原创 2018-05-14 17:55:55 · 423 阅读 · 0 评论 -
Android笔记:热修复,插件化开发,增量更新一览
热修复:用于bug线上修复,无需发布新版本,无需用户覆盖安装 插件化:扩展主应用程序,zip,jar,dex,apk(无需安装)几种形式 增量更新:用户下载新旧版本apk的差分包,合并本地data下的apk用以升级,关键词:bsdiff,合并原创 2018-05-18 16:21:44 · 518 阅读 · 0 评论 -
Android:使用LoadingLayout来展示加载数据时不同状态
LoadingLayout是应用于Android中的一个加载数据不同状态的类库(自定义控件)原创 2017-11-21 13:16:10 · 1751 阅读 · 0 评论 -
Android开发:RecyclerView平滑流畅的滑动到指定位置
RecyclerView.smoothScrollToPosition(int);发现效果并不理想,滑动过程很突兀,很快就滑动到了指定位置,并没有像函数名那样smooth,本文将分享如何使得RecyclerView平滑流畅的滑动到指定位置。原创 2017-10-17 20:11:02 · 15108 阅读 · 1 评论 -
Android开发小记:命名空间错误导致自定义属性不生效
最近在使用自定义控件的时候发现预览有效果,可是运行起来就不展示,最后才发现自己的布局中的命名空间有问题,导致了控件不展示原创 2017-09-12 17:49:47 · 3071 阅读 · 0 评论 -
Android开发:使用Windows cmd窗口抓取Android手机log
写在前面的废话一般Android开发者都会使用Eclipse,Android studio观察log输出,其实后台是使用adb来打印log的,这里介绍的是如何让log输出到cmd窗口,而不是Eclipse,Android studio中,测试人员可使用该方法给开发人员抓取log,开发人员也可以在Eclipse的logcat抽到的时候使用该方法应急用。cmd抓取Android log原创 2015-08-04 16:25:05 · 10439 阅读 · 4 评论 -
Android基础:教你如何获取软件自身版本号和Android系统版本号
在Android软件开发过程中,版本升级常常需要得到软件版本,与服务器作对比后决定是否升级,那么如何获取软件版本呢?有时我们需要获取系统版本已决定加载合适的资源文件,系统版本又如何得到呢?假如我们不想要在系统指定的位置填写版本号,我们可以如何定义软件版本呢?又该如何获取呢?本文将一一告诉你。原创 2015-01-28 11:36:04 · 7873 阅读 · 0 评论 -
Android开发:IntentService使用(源码分析)
IntentService继承自Service,那么它与Service又有哪些不同?使用起来有哪些需要注意的地方呢?什么时候使用Service,什么时候使用IntentService?一起来看看。原创 2015-06-25 16:38:26 · 1886 阅读 · 0 评论 -
Android开发:SurfaceView基本用法总结
本文主要讲解如何使用SurfaceView,旨在帮助大家快速上手SurfaceView开发。由于上篇文章《Android开发:SurfaceView基本用法总结及开发问题分享》 排版不佳,所以另起一篇单独介绍SurfaceView的基本用法。原创 2015-05-25 09:54:58 · 4275 阅读 · 0 评论