自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android 进阶知识归纳

Java相关: 1.多线程并发,锁,线程池原理 https://www.cnblogs.com/skywang12345/p/java_threads_category.html 为什么notify(), wait()等函数定义在Object中,而不是Thread中? wait(),no...

2019-09-02 14:23:45

阅读数 541

评论数 0

原创 android apk无法安装及闪退问题

app在部分手机上(低版本)打不开或打开就闪退的问题 之前做项目集成的是 环信的sdk ,环信的sdk 确实很好,客服 也很给力。但是在集成的过程中发现,apk 在手机上发布不了,要么就是,安装了 打不开,打开就闪退:问题有一下两方面 1.之前做过一个环信的即时通讯,集成好环信的sdk之后在4...

2017-03-30 10:43:32

阅读数 17401

评论数 37

原创 源码学习《5》PMS 的启动 和 AndroidManifast.xml 解析流程

通过前两篇文章学习我们大致了解了,apk 资源的加载 和 XML 标签创建对象的过程,今天就来学习一下 Android app启动后Manifast中的 标签是怎么被识别的,activity / service等四大组件对象的创建 android 8.0。 Manifast.xml的加载和解析?...

2019-11-18 18:21:24

阅读数 19

评论数 0

原创 源码学习《4》Launcher 启动 app 和 apk 资源的加载流程 (App 换肤原理 2)

Android开发中我们的apk资源是如何被加载到的,我们知道当我们点击桌面launcher 的图标拉起我们的app显示我们的页面资源。这个是如何被加载的呢?今天就引出两个看源码的问题 基于 8.0 源码: 不同版本源码实现略有差异。 Launcher启动app的流程? Apk资源是如何被加...

2019-11-15 13:47:36

阅读数 65

评论数 0

原创 源码学习《3》Layout.xml 的解析和 xml 标签生成 View 对象的过程(App 换肤原理 1)

今天要学习源码的两个问题: Layout.xml布局是怎么加载解析的 Layout.xml中的 view 标签又是怎么被转化成对象的 针对这两个问题引出源码学习的流程,带着问题去看源码。 总体流程: 问题 1 布局是怎么加载的 : 首先我们最熟悉的代码肯定是: public cl...

2019-11-08 17:40:10

阅读数 40

评论数 0

原创 Android中的反射

在android开发中经常会用到反射的知识,举几个反射的例子分析反射。 在android中有些源码中的类是hide的or私有的,我们不能够直接得到具体的对象,但是这些类在我们应用程序运行之后他的对象确实是被创建并且存在于内存中的,只是是私有的,我们直接拿不到,所以就需要通过反射去得到这个对象,但...

2019-09-10 16:12:11

阅读数 52

评论数 2

原创 Java虚拟机引发的连环血案

(个人总结系列)我们是不是经常在回顾java虚拟机结构,每个结构的作用,线程并发,锁,volatile,垃圾回收,我也是看了就忘,最近就把这些知识点给串起来了,这样能增强记忆,也便于我们回顾知识点。 由于个人原因,平时很忙,就不会去把每个知识点都给大家分析到位,有些不会的知识点可以根据图去搜索,...

2019-09-06 15:26:53

阅读数 33

评论数 0

原创 Android 绘制录音波浪 + 拓展: 让“字体”迎波而浪

效果图: 1.绘制录音曲线效果 公式和网站介绍 我们要绘制这种效果,最直观方便的方式就是采用三角函数的cos/sin的函数,首先我们需要一个重要的网站: Desmos:https://www.desmos.com/calculator可以把我们的三...

2019-08-23 15:29:37

阅读数 75

评论数 0

原创 源码学习总结《2》Android 应用程序进程启动

通过上一篇学习android系统启动我们了解到了,init进程启动,zygote进程启动,systemserve进程启动,AMS等服务启动过程,最后启动第一个launcher 桌面进程启动。我们还有一个分支没有学习,就是应用进程的创建,今天就来学习应用进程的启动流程。应用进程的启动可分为两部分: ...

2019-08-21 16:12:03

阅读数 72

评论数 2

原创 Java8和enum枚举简单使用 优化代码

1.减少大量的 if/else,switch/case 使用枚举,可以减少我们的判断,枚举也能简单封装成策略模式 public enum Season { SPRING(1){ @Override public void run() { ...

2019-08-09 15:27:17

阅读数 399

评论数 0

原创 源码学习总结《1》Android 系统启动流程

对于NDK开发学习已经完结,并且成功的做出相应的案例,银行卡/身份证卡号识别,现在呢,伟大的学习路程又要开始了,接下来就是要学习系统源码framework相关的知识。(只做个人学习总结,学过就留点痕迹~~,不做长篇大论,谢谢 ^_^ ) 对于android源码学习,最开始肯定要了解以下andro...

2019-08-05 18:22:41

阅读数 36

评论数 0

原创 OpenCv NDK 银行卡/身份证号识别(4) 基于openCv SVM的机械学习模型训练识别

上一篇我们把银行卡号给分割提取出来,为我们本篇机械模型训练提供了素材,因为我们最终是要把分割出的字符图片给识别出他是具体的数字几,而不能就仅仅把截取到的图片展示出来,图片他仅仅还是图片,所以我们要知道具体的图片对应的数字,所以就用到了,机械学习中的SVM 支持向量积的分类器。 百度百科支持向量机...

2019-07-27 14:43:27

阅读数 178

评论数 0

原创 OpenCv NDK 银行卡/身份证号识别(3) 银行卡/身份证图像处理和卡号区域剪切

通过前两篇我们已经对Opencv有所了解了,接下来就要真正的来处理我们的图像,然后把卡号给提取出来。首先我们先简单分析以下银行卡然后把处理流程列出来: 由上图我们很容易知道既然我们要找到卡号,银行卡的外边轮廓,然后根据比例找到卡号的位置,处理流程: 把采集到的图片根据银行卡边缘进行剪切,得...

2019-07-26 16:16:07

阅读数 530

评论数 0

原创 OpenCv NDK 银行卡/身份证号识别(2) Bitmap和Mat相互转化

我们都知道在我们android程序中一个图片的表达是使用的Bitamp来存储的,而在Opencv中图片的存储是Mat矩阵的形式。所以如果我们想把我们android的图片传给opencv,就要先把bitmap转成Mat类型,所以我们先来了解以下Mat是个什么东西。 1.Mat简单介绍 一个图...

2019-07-26 14:55:00

阅读数 83

评论数 0

原创 OpenCv NDK 银行卡/身份证号识别(1) OpenCv NDK项目集成

最近一直在学习ndk开发相关的知识点,其实也是一路迷茫不知道从哪里下手,其实想做ndk相关的开发还是要有一定的c和c++的基础,特别是对指针,结构体,c++的类,函数指针,命名空间,&引用等等,防止在开发的过程中出现问题而不知到具体原因。之前也有几篇文章对c和c++记录了一些容易错...

2019-07-26 10:09:41

阅读数 215

评论数 2

原创 JNI/NDK开发 配置CMakelist文件加载第三方 so

我们知道我们正常加载so文件都是通过 static { System.loadLibrary("native-lib"); } 这是我们纯加载so来做项目,项目没有配置CMakelist文件,如果配置了CMakelist文件我们加载so就不是这...

2019-07-12 20:26:39

阅读数 151

评论数 1

原创 JNI/NDK开发 C 调用java方法

android NDK开发方式有很多种,随着android studio的崛起谷歌官方的开发方式是 cmake 形式的开发,在eclpse时代大多数使用的是android.mk等方式。今天主要使用cmake方式学习整个流程。 1.创建c/c++项目 在我们创建项目的时候我们可以勾选上suppo...

2019-07-03 15:36:02

阅读数 77

评论数 1

原创 JNI/NDK 开发 C/C++ 典型基础知识点

1.引入动态裤 // path 路径:加载一个具体路径下的so库,可以是从服务器下载下来的(必须要下载到data/data/目录下面)。 System.load(path); //path 加载本地 lib下面的so库。 System.loadLibrary(path); 2.c语言中方法不...

2019-07-03 14:58:29

阅读数 166

评论数 1

原创 Binder IPC跨进程通讯学习记录

IPC跨进程通讯的方式有 socket/管道/广播/binder,在android 中用的最广泛的就是binder几乎底层通讯都是使用binder来处理的例如:ActivityThread 和 IApplication等等,少数使用了socket 例如在zogit系统启动的时候。 目录 bin...

2019-06-05 17:04:57

阅读数 40

评论数 1

原创 Android 语言切换时发生了什么,源码是怎么调用的,对我们app有何影响,我们该怎么做去避免发生异常

在做应用的时候经常会碰到多语言的适配,在我们切换语言时候,我们的app到底发生了什么呢?以及切换语言经常出现的错误问题,比如空指针,fragment的问题等等。对于怎么适配多语言今天不是重点,重点是语言切换后我们的app去做了什么让她的语言发生了变化。以下情况都是在我们打开页面之后切换语言的,也就...

2019-05-27 10:57:26

阅读数 69

评论数 0

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