最新文章

Android 端相机视频流采集与实时边框识别

本文是 SmartCamera 原理分析的文章,SmartCamera 是我开源的一个 Android 相机拓展模块,能够实时采集并且识别相机内物体边框是否吻合指定区域。 SmartCamera 是继 SmartCropper 之后开源的另外一个基于 OpenCV 实现的开源库,他们的不同点主要包括以下几个方面: SmartCropper 是处理一张图片,输 […]

SmartCamera 相机实时扫描识别库

SmartCamera 是一个 Android 相机拓展库,提供了一个高度可定制的实时扫描模块能够实时采集并且识别相机内物体边框是否吻合指定区域。如果觉得还不错,欢迎 star,fork。 语言描述起来略显生涩,具体实现的功能如下图所示,适用于身份证,名片,文档等内容的扫描、自动拍摄并且裁剪: 在相机实现上,SmartCamera 以源码的方式引用了 Goo […]

高性能日志框架 Log4a 原理分析

本文主要分析 Android 端基于 mmap 的高性能日志框架 Log4a 的实现原理。 项目地址:https://github.com/pqpo/Log4a(求star) 前言 对于移动开发者来说,针对一些用户反馈难以复现的线上问题,分析日志有时候是解决问题的必要手段。 但是日志的收集一直有个痛点,就是性能与日志完整性无法兼得。 要实现高性能的日志收集, […]

Android 端基于 OpenCV 的边框识别功能

之前写了一个智能图片裁剪库:SmartCropper,选择照片之后会自动识别出边框的位置,适用于身份证,名片,文档等照片的裁剪。 你也可以关注我新开源的另外一个库 SmartCamera,也是基于 OpenCV 实现的, 能够实时采集并且识别相机内物体边框是否吻合指定区域, 由于是实时采集安卓相机视频流并且识别, 对于性能的要求会更高。 本篇文章主要就边框识 […]

热修复之 Method Hook 原理分析

引言 目前国内大厂均开源了自己的 Android 热修复框架,阿里的《深入探索 Android 热修复技术原理》一书全面介绍了热修复技术的现状,原理与展望。一方面是阿里系为代表的底层方法替换,另一方面是以腾讯系为代表的类加载方案。前者支持立即生效,但是限制比较多;后者必须冷启动生效,相对较稳定,修复范围广。之前分析过微信的热修复框架 Tinker 即属于后者 […]

深入理解 Android 控件

概述 本篇文章主要通过源码讲述 Android 控件系统,包括输入事件是如何产生的, View 是如何绘制的,输入事件是如何传递给 View 的,Window token 与 type 之间的联系等。整个系统比较复杂,每个部分只能点到为止,有兴趣可以继续深入,主要是让读者对 Android 控件系统有一个大体的认识。 例子 下面是创建 Window 并显示 […]

C++11 学习笔记

上篇文章《理解JNI技术》介绍了Java与C/C++代码交互的一项技术。由于在项目中有用到C++代码,所以重拾吃灰半年多的《C++ Primer 第5版》。大学期间也学过Hello World版的C++,由于C++11版标准变化之大(据悉ART虚拟机的实现代码已经切换到了C++11了),完全不是我以前认识的那个C++了,所以专门记录一下,并且会不定期更新,最 […]

深入理解 System.loadLibrary

本文主要讲述 Android 加载动态链接库的过程及其涉及的底层原理。 会先以一个Linux的例子描述native层加载动态链接库的过程, 再从Java层由浅入深分析System.loadLibrary 首先我们知道在Android(Java)中加载一个动态链接库非常简单,只需一行代码: System.loadLibrary("native-lib"); 事 […]

Kotlin 函数与函数式编程

自从Google爸爸宣布Kotlin为自己的干儿子之后,Kotlin被各大社区炒的火热。 如果你对Kotlin语法一无所知,推荐先阅读官方文档或者中文站(https://www.kotlincn.net/docs/reference/)之后再看这篇文章会有更深刻的理解。本篇文章主要介绍Kotlin函数的用法,以及自己对函数式编程的一些理解。并且会和Pytho […]

理解 JNI 技术

JNI 即Java native interface,,是一种技术,提供了丰富的接口,可以在Java层调用native代码,也可以在native层调用Java代码,native代码一般是指C/C++程序。JNI就像是一座桥,连通着Java与native。阅读Android源代码的时候可以发现其用了大量的JNI技术,如果要深入学习Android了解JNI技术是 […]

深入理解 MessageQueue

Android 中有两个非常重要的知识点,分别是Binder机制和Handler机制。前者用于跨进程通讯,并且通过 ServiceManager 给上层应用提供了大量的服务,而后者用于进程内部通讯,以消息队列的形式驱动应用的运行。之前的文章已经多次分析了Binder相关的内容,复杂程度远高于Handler,之后还会继续分析Binder。说到Handler,做 […]

深入理解 ServiceManager

ServiceManager是安卓中一个重要的类,用于管理所有的系统服务,维护着系统服务和客户端的binder通信。 对此陌生的可以先看系统服务与ServiceManager来了解应用层是如何使用ServiceManager的。 我们可以通过 ServiceManager.getService(String name)来获取服务,返回的是一个Binder对象 […]