自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

努力的八戒

左手代码,右手艺术

  • 博客(168)
  • 资源 (24)
  • 收藏
  • 关注

原创 camera与camera2中预览载体

一、cameramCamera = Camera.open(i)打开并创建一个相机实例1、可以通过mCamera.setPreviewDisplay(mSurfaceView.getHolder())设置预览载体直接预览2、也可以通过mCamera.setPreviewTexture(mSurfaceTexture)设置预览载体是一个mSurfaceTexture。mSurface...

2019-07-06 16:40:03 328

原创 Gradle Sync: Wait for the other thread to finish acquiring the distribution

众所周知,as用gradle来管理版本,当as更新后,gradle一般也要相应更新。如果用公司网络或者vpn下载gradle完全没问题,但是当在家里网络不好时下载gradle就很有可能报Gradle Sync: Wait for the other thread to finish acquiring the distribution。然后一直停在更新或下载的界面直到失败。该问题主要是由于as...

2019-06-30 16:02:44 5874

原创 OpenglES语法以及绘制三角形

一、基本变量GLSL 的语法与 C 语言很类似,可以用变量、结构体、数组(GLSL 中没有指针类型) 变量类别 变量类型 描述 空 void 用于无返回值的函数或空的参数列表 标量 float, int, bool ...

2019-06-02 22:38:35 1141

原创 java同步方式

1、voliatevoliate赋予变量在多线程中的可见性,只能作用于变量,非堵塞。java内存模型(如下图)描述了多线程之间信息交换和同步的方式:每个线程都从主内存load一份数据到自己的工作内存,线程对变量的读写操作都是在工作内存中进行的,然后在save到主内存。如果多线程同时操作主内存同意拷贝变量a,那么就可能导致变量的值乱掉,voliate保证了voliate变...

2019-05-26 18:55:17 1635

原创 android.hardware.Camera2入坑之旅

之前写过android.hardware.Camera入坑之旅,现在适配Camera2。Camera2相对于Camera,坑位更多。比如说,Camera通过下面方法设置任意自定义参数 /** * Sets an integer parameter. * * @param key the key name for the ...

2019-04-28 21:38:24 889

原创 YUV

一、预备知识YUV也叫YCbCr,Y表示明亮度(Luminance、Luma),U和V则是色度、浓度(Chrominance、Chroma)。Y、U和V三个分量的数据分别保存在三个Plane类中,可以通过getPlanes()得到。Plane实际是对ByteBuffer的封装。Image保证了plane #0一定是Y,#1一定是U,#2一定是V。且对于plane #0,Y分量数据一定是连续存储...

2019-04-26 09:09:00 1304

原创 android ndk之CMake

android ndk开发可以通过ndk-build、CMake以及独立工具链三种方式来进行构建,本文主要讲解通过CMake构建ndk。首先下载SDK-Tools中的CMake、LLDB、NDK三个工具。早期as版本创建项目时记得选择Include C++ support选项,后面版本(貌似as3.1以后吧)选择Native C++选项。后面一路next就可以创建带有...

2019-04-21 21:28:12 214

原创 LRU算法和LinkedHashMap

LRU(最近最少使用)算法:如果数据在最近很少被使用,那么在后面使用的概率也会很低,那个数据回收时就倾向于回收这部分数据。它的底层实现是LinkedHashMap。 /** * @param maxSize for caches that do not override {@link #sizeOf}, this is * the maximum numbe...

2019-04-14 11:40:17 167

原创 Camera2使用

随着android9.0的发布,android系统相机换成了Camera2,所以我们也要适配的。流程示意图主要类要枚举,查询和打开可用的摄像头设备,请获取CameraManager实例。CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);try...

2019-03-31 21:43:29 4442

原创 AS3.3.1bug “Could not identify launch activity: Default Activity not found”

更新到android studio3.3.1后,前一天还运行正常的android项目,第二天就报“Could not identify launch activity: Default Activity not found” 。检查AndroidManifest.xml,activity是一个有效的路径文件呀。最后在主module的build.gradle文件sourceSets标签,之前m...

2019-03-23 11:03:58 1227

原创 Systemproperties.set Unable to set property "xx" to "xx": error code: 0x18

通过反射或者调用系统jar来修改Systemproperties的值,失败报错Unable to set property "xx" to "xx": error code: 0x18暂时想到两种方式解决:1、关闭selinux ,具体步骤adb shellsetenforce 02、修改签名方式以及key的前缀,具体步骤属性值以persist.sys.开头Andr...

2019-02-28 03:32:51 16440 2

原创 Android.mk文件学习

1、LOCAL_PATH:= $(callmy-dir)‘:=’是赋值的意思,LOCAL_PATH定义了当前模块的相对路径,必须出现在所有的编译模块之前。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。2、include $( CLEAR_VARS)CLEAR_VARS由编译系统提...

2019-02-15 17:00:17 793

原创 https安全

https相对于http解决三个问题:1、防止通信内容被监听2、防止通信内容被篡改3、防止通信双方被冒充(中间人攻击)https主要用了下面三个技术一、对称加密(比如AES、DES)由于http时明文传输,中途可能会被窃听到通信内容,https对通信内容进行对称加密二、非对称加密(比如RSA)使用非对称加密对上面的对称加密的密钥进行加密,一方面可以防止对称加密的密钥...

2019-01-28 18:26:28 398

原创 Android源码编译

一、编译流程1、在源码根目录打开命令行,使用如下命令初始化编译环境source build/envsetup.sh2、选择编译版本lunch xxVersion(适用于版本号已知)lunch (从弹出的选择版本列表中选择版本)3、make (或者make -j 并行编译, j 取cpu核心数的两倍比较适宜)二、踩坑之旅1、FAILED: out/target/c...

2019-01-17 21:07:11 1138

原创 java反射

RTTI用于编译期查看程序信息,反射则是在运行期查看以及修改class信息,很多框架都会用到反射。一、访问对于类对象1、通过类的全路径名Class clz = Class.forName("reflect.Person"); //类的全路径访问类对象2、通过类名Class clz=Person.class; //类名访问类对象3、通过实例对象访问类对象Person...

2018-12-08 15:05:48 143

原创 注解

注解(也称为“元数据”)可以为代码添加信息,它可以让元数据与源代码文件结合在一起,而不是保存在外部文档中。注解可以用来深沉描述符文件,甚至新类的定义,并且有助于减轻编写“模板”代码的负担。@interface 用来声明一个注解,注解和接口很像,注解也会被编译成class文件,比如下面这样,只是比接口多了一个@符号 @Target(ElementType.METHOD) @R...

2018-12-02 15:50:39 183

原创 方法锁、对象锁、类锁

一、java内存模型java内存模型规定了所有变量都存储在主内存(Main Memory)中,每个线程还有自己的工作线程(Working Memory),线程的工作内存保存了该线程使用到的变量的主内存副本拷贝,线程对变量的所有读写操作都必须在工作线程中进行,而不能直接读写主内存中的变量(这里的变量指的是实例字段、静态字段和构成数组对象的元素以及堆上的数据)。不同线程之间也无法直接访问其它线程工...

2018-11-04 15:22:18 958

原创 HashMap,HashTable,ConcurrentHashMap

一、HashMap和HashTable1、HashTable是一个从jdk1.0就有了;HashMap从jdk1.2才加入,现在HashTable已废弃。2、HashTable底层实现是数组+链表;HashMap底层实现是数组+链表+红黑树(jdk1.8加入红黑树)。3、HashTable是线程安全的,每个方法都是同步的,所以效率低;HashMap不是线程安全的,未加锁,效率高。4...

2018-11-03 19:32:45 141

原创 hashCode() 、 equals()、==

一、三者关系java的Object类对hashCode() 方法注解有这么一句解释hashCode和equals的关系* <li>If two objects are equal according to the {@code equals(Object)}* method, then calling the {@code hashCode} method on e...

2018-10-31 20:05:10 107

原创 jdk1.8中HashMap内部实现

jdk1.8之前HashMap的底层实现是数组+链表,从jdk1.8开始,HashMap的底层实现是数组+链表+红黑树。Node(int hash, K key, V value, Node<K,V> next) { this.hash = hash; this.key = key; this.value...

2018-10-21 16:41:16 204

原创 Java浅拷贝和深拷贝

java拷贝默认是浅拷贝,比如System.arraycopy()和clone()。java中将一个对象复制到另外一个对象上主要由直接赋值、深拷贝和浅拷贝三种方式。一、基本类型赋值1、先看下基本类型int和String对象拷贝的例子 String s1 = "aaaa"; String s2 = s1; int a=3; ...

2018-10-02 11:39:11 326

原创 android事件分发机制

View事件分发机制时间一久就容易忘记,趁着国庆把这个知识点捋一遍,加深印象。android控件都继承自View和ViewGroup,其实ViewGroup也是继承自View,只是由于ViewGroup是View的集合,一些方法有自己的独特实现而已。一、View事件分发单一View事件处理比较简单,主要经过如下几个步骤,其中onTouchEvent、performClick等方法执行还...

2018-10-01 19:46:17 1717

原创 锁屏界面悬浮窗全屏显示

1、系统级悬浮窗在锁屏界面可以显示的悬浮窗有TYPE_SYSTEM_OVERLAY和TYPE_SYSTEM_ERROR/** * Window type: system overlay windows, which need to be displayed * on top of everything else. These windows must not take input...

2018-09-30 15:54:23 4545 1

原创 UML

UML(统一建模语言)shi面向对象软件的标准化建模语言,主要包含事物、关系和图三个构造块。一、事物1、结构事物模型的静态部分,描述概念或物理属性。结构性事物包括类(class)、接口(interface)、写作(collaboration)、用例(use case)、构件(component)、制品(artifact)和节点(node)。2、行为事物模型的动态部分,描述了跨越...

2018-09-24 23:11:01 343

原创 java运行时数据区

1、程序计数器线程私有,用于记录线程内字节码的行号,字节码解释器通过程序计数器来获取下一个需要执行的字节码指令。如果执行的是本地方法,则计数器为空。程序计数器不会发生OutOfmemoryError。2、虚拟机栈(Java Virtual Machine Stacks)线程私有,描述Java方法执行的内存模型:每个方法执行时都会创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法...

2018-09-20 20:29:39 147

原创 android8.0及以上设置logcat打印

随着android8.0及以上对性能优化的进行,日志打印也做了限制,有时log不再输出,这个可能是log缓存满了导致1、通过adb logcat -g查看log缓存的大小。2、通过adb logcat -G 10M设置log缓存的大小。3、通过adb logcat -c清除log缓存区.。4、windows下过滤日志adb logcat | fi...

2018-09-15 21:11:10 1680

原创 android ImageView.ScaleType

android中由于图片素材尺寸和ImageView尺寸不一致,可以通过ScaleType设置不同的图片显示效果。0、ImageView.ScaleType.MATRIX/** * Scale using the image matrix when drawing. The image matrix can be set using * {@link ImageView#setIma...

2018-09-01 14:12:25 143

原创 implementation和api替代compile,compileOnly替代provided,runtimeOnly替代apk

Gradle 3.4 引入了新的Java 库插件配置,允许您控制到编译和运行时类路径的发布(适用于模块间依赖项)。 Android 插件 3.0.0 正在迁移到这些新依赖项配置。 要迁移您的项目,只需更新您的依赖项以使用新配置,而非已弃用配置,如下表中所列。新配置 已弃用配置 行为 implementation compile 依赖项在编译时对模块可用,并且仅在运...

2018-08-30 20:22:02 9447

原创 Java中容器类之Collection和Map浅谈

一、Collection一个独立元素的队列,这些元素都服从一条或多条规则。List必须按照插入顺序保存元素;Set不允许有重复元素;Queue按照队列规则来确定对象产生顺序,只能从一端插入对象,并从另一端移除对象。1、ListArrayList和LinkedList都是List类型,他们都是按照插入的顺序保存元素,两者的不同是执行某些操作的性能。ArrayList内部实现可变数组,...

2018-08-18 11:43:44 215

原创 android性能优化之渲染优化和内存优化

卡顿:Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染。如果你的某个操作是大于16ms,系统在得到VSYNC信号的时候就无法进行正常的渲染,这样就发生了丢帧即卡顿现象。ANR:主线程在特定的时间内没有做完特定的事情, 通常在如下两种情况下会弹出ANR对话框:5s内无法响应用户输入事件(例如键盘输入, 触摸屏幕等). BroadcastReceiver在10s内无法结束...

2018-08-12 22:31:33 1361

原创 android.hardware.Camera入坑之旅

1、相机预览方向适配可以参考谷歌官方适配方案 public static void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera) { android.hardware.Camera.CameraInfo info = ...

2018-08-11 18:13:06 6557 1

原创 PorterDuff.Mode之动态扫描图

PorterDuff.Mode自android api1就引入了,主要是对两个图片进行交、并、异或等操作,主要有下列几种形式本文利用SrcIn实现一个人脸扫描的效果,步骤如下:1、准备两个人脸照片(一明一暗),暗照片作为背景,亮照片作为src前景显示2、然后通过SrcIn用一个透明矩形框(Dst)与亮照片(src)取交集即可得出一个亮照片的局部区域3、再给透明矩形一个上下的速度...

2018-08-04 21:13:57 299

原创 android资源替换方案overlay

Android overlay机制的目的是为OEM厂商提供一种替换原生系统资源的机制,它允许在不修改packages中apk的情况下,来自定义 framework和package中的资源文件,实现资源的定制。一、RRO原理应用运行时,通过 getString/getDrawable去调用某个资源,会将资源的resources ID 作为参数传给Framework层。Framework层查找资源时会...

2018-07-15 10:42:38 8725 4

原创 android自定义View之气球碰撞效果

最近项目需要做个许多小球碰撞的效果,就用自定义View撸了一个出来,效果如下这个效果也不复杂,说下算法步骤吧。1、小球数量ballCount,可以设个最大值,在这个阈值内去随机数2、小球圆心随机坐标(mX,mY)以及半径radius3、小球在x方向和y方向的随机速度mSpeedX,mSpeedY4、本次效果小球默认白色,通过alpha设置透明度,实际你们也可以通过随机颜色值达到五彩频繁的小球效果。...

2018-07-14 17:08:31 2140

原创 TCP/IP协议

一、TCP/IP协议簇TCP/IP协议是将不同地域、不同操作系统、不同型号的计算机联系起来的纽带。网络协议初探中提到了五层模型和七层模型及其简单介绍,本文讲到的TCP/IP协议簇则分为四个层次。1、链路层,有时也成数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。将比特组装成帧和点到点的传递(帧Frame),主要协议ARP(Address Resolution P...

2018-07-07 09:24:55 449

原创 android加载大图

故事要从一场面试说起,如何加载一个大图而不会发生OOM?这里有两种途径,一、降采样大图;二、局部加载大图。由于android内存的限制,andoid系统给每个应用分配的内存是有限的,当直接加载一个占用内存加大的图片时就会发生OOM。一、降采样大图主要是利用BitmapFactory.Options对象的inSampleSize参数,根据空间尺寸与大图尺寸的比率来缩小大图,从而显示大图的缩略图。关键...

2018-07-02 21:42:44 1039

原创 JobScheduler、JobInfo、JobService三角关系

JobScheduler是Android L(API21)新增的特性,该框架将在执行作业(也就是JobInfo)时智能化,并尽可能地批量并推迟JobInfo,从而节省电量。Android8.0及以上建议使用JobScheduler来启动服务。JobScheduler是作业发布器,它的任务是分发设置作业JobInfo。JobInfo是作业包装体,它包含了任务执行的条件、开始时间、截止时间、具体任务、...

2018-06-29 21:30:28 3747

原创 android开发问题(持续更新)

1、Warning: there were 3 instances of library classes depending on program classes. You must avoid such dependencies, since the program classes will be processed, while the library...

2018-06-21 20:06:53 909

原创 Android Studio的build过程

官网构建流程构建流程涉及许多将您的项目转换成 Android 应用软件包 (APK) 的工具和流程。构建流程非常灵活,因此了解它的一些底层工作原理会很有帮助。图 1. 典型 Android 应用模块的构建流程。如图 1 所示,典型 Android 应用模块的构建流程通常依循下列步骤:编译器将您的源代码转换成 DEX(Dalvik Executable) 文件(其中包括运行在 Android 设备上...

2018-06-15 20:08:38 2768

原创 mtk、sprd、qcom版本烧写(附烧写工具下载链接)

一、mtk烧写mtk烧写系统相对于sprd和qcom简单一些,需要准备好系统刷机包1、双击.\SP_Flash_Tool_exe_Windows_v5.1744.00.000\flash_tool.exe打开工具2、工具主界面的Download-Agent一栏维持默认(.\SP_Flash_Tool_exe_Windows_v5.1744.00.000\MTK_AllInOne_DA.bin)...

2018-06-06 20:21:21 10053

2005-2021信息系统项目管理师历年真题(含上午题、案例分析、论文)试题和答案.7z

2005-2021信息系统项目管理师历年真题(含上午题、案例分析、论文)试题和答案

2021-08-03

aspectj-1.9.6.jar.7z

aspectj-1.9.6.jar.7z

2021-06-25

Camera2Demo2.7z

YUV_420_888是YUV_420的一个大类,android camera2的ImageReader中设置了YUV_420_888后具体返回数据U和V是单独处于不同平面还是相同平面交叉排列要看具体的设备了,一般来说pixelStride=1表示独占一个平面(一般Y平面就只有Y数据),pixelStride=2则表示U和V是交叉排列。 最近工作中发现ImageReader设置了特定尺寸后,实际返回的数据并不是之前设定的尺寸。

2020-08-20

Android.mk编译内置无源码apk

有个编译好的第三方apk,合入到系统中,在packages\apps目录创建文件夹wukong,将第三方wukong.apk拷贝到wukong文件夹下,并在wukong文件夹创建Android.mk

2020-08-18

python-3.8.3.exe.7z

python安装包,适用于为windows,32位和64位都兼容,

2020-06-15

androidqzt_downcc.com.zip

android中设置字体库 Typeface typeFace = Typeface.createFromAsset(this.getAssets(), "fonts/xx.ttf"); textView.setTypeface(typeFace); textView.setText("帅气");

2019-09-18

factory.zip

阅读设计模式之禅以及大话设计模式,写个demo加深印象,可以参考作者文章原 《简单工厂模式、工厂方法模式和抽象工厂模式》https://blog.csdn.net/u013795543/article/details/100173672

2019-08-31

OPENGL ES 3.0编程指南 原书第2版 中文版.7z

android OpenGL ES学习必备书籍,从基本到三角形四边形绘制到离屏渲染应有尽有,很适合零基础入门

2019-07-12

framework.jar

android源码编译后生成的./out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar,可以作为android引用库

2018-09-17

android自定义View扫描人脸效果

本文利用SrcIn实现一个人脸扫描的效果,步骤如下: 1、准备两个人脸照片(一明一暗),暗照片作为背景,亮照片作为src前景显示 2、然后通过SrcIn用一个透明矩形框(Dst)与亮照片(src)取交集即可得出一个亮照片的局部区域 3、再给透明矩形一个上下的速度,即可达到扫描的效果

2018-08-04

android自定义View之气球碰撞效果

算法步骤: 1、小球数量ballCount,可以设个最大值,在这个阈值内去随机数 2、小球圆心随机坐标(mX,mY)以及半径radius 3、小球在x方向和y方向的随机速度mSpeedX,mSpeedY 4、本次效果小球默认白色,通过alpha设置透明度,实际你们也可以通过随机颜色值达到五彩频繁的小球效果。 5、初始时给每个小球一个初始随机位置(不能超出屏幕)以及初始随机速度。 6、每个一段时间计算一下小球位置并刷新一下界面,当小球到达屏幕边沿则速度设为当前相反数达到反弹的效果。

2018-07-14

android加载大图

故事要从一场面试说起,当问到如何加载一个大图而不会发生OOM,这里有两种途径,一、降采样大图;二、局部加载大图 由于android内存的限制,andoid系统给每个应用分配的内存是有限的,当直接加载一个占用内存加大的图片时就会发生OOM. 一、降采样大图 主要是利用BitmapFactory.Options对象的inSampleSize参数,根据空间尺寸与大图尺寸的比率来缩小大图,从而显示大图的缩略图。 二、局部加载大图 主要利用BitmapRegionDecoder类的decodeRegion方法来加载局部区域,通过重写View的onTouchEvent方法监听手指滑动事件,更新显示区域。

2018-07-02

高通烧写软件

软件太大,存到百度云,附件是下载链接 高通烧写系统最坑,这就需要拼手速啦,准备好系统刷机包 1、软件安装以后,找到安装目录,双击.\Qualcomm\QPST\bin\QFIL.exe打开工具 2、工具主界面Select Build Type有两个选项(Flat Build和Meta Build),在不知道选择哪种烧写类型时先选择Flat Build试试吧,不行再换Meta Build 3、工具主界面Select Programmer选择.elf文件 4、工具主界面点击”LoadXML“选择xml文件,此时”Download"按钮不可以点击 4、手机关机,同时按音量上键、下键和开机键后通过usb连上电脑,此时电脑上会显示手机端口并且”Download"按钮可以点击,点击”Download"按钮后看到下面Status栏开始烧写了,迅速松开音量上键、下键和开机键

2018-06-06

展讯烧写工具

sprd烧写系统相对于qcom简单一些,比mtk稍微复杂,准备好系统刷机包 1、双击.\Bin\ResearchDownload.exe打开工具 2、工具主界面点击左上角第一个按钮“Load packet”选择pac展讯rom包 3、pac包load完成后,点击“Start downloading"按钮 4、手机关机,同时按音量下键和开机键(有些手机是音量上键和开机键)后通过usb连上电脑自动开始烧写

2018-06-06

mtk系统烧写工具

mtk烧写系统相对于sprd和qcom简单一些,需要准备好系统刷机包 1、双击./SP_Flash_Tool_exe_Windows_v5.1744.00.000/flash_tool.exe打开工具 2、工具主界面的Download-Agent一栏维持默认(.\SP_Flash_Tool_exe_Windows_v5.1744.00.000\MTK_AllInOne_DA.bin),不用手动选择了 3、Scatter-loading File一栏需要你手动选择刷机解压包里的scatter.txt文件 4、下面选择“Firmware Upgrade" 5、手机关机,通过usb连上电脑,点击“Download"开始烧写

2018-06-05

开发工具jdk1.9第4部分

拓展了javafx.scene.control包,如增加了javafx.scene.control.Alert等类 源文件384M,分为4部分上传

2017-11-12

开发工具jdk1.9第3部分

拓展了javafx.scene.control包,如增加了javafx.scene.control.Alert等类 源文件384M,分为4部分上传

2017-11-12

开发工具jdk1.9第二部分

拓展了javafx.scene.control包,如增加了javafx.scene.control.Alert等类 源文件384M,分为4部分上传,cdsn强制每个资源要2分,操蛋

2017-11-12

开发工具jdk1.9第1部分

拓展了javafx.scene.control包,如增加了javafx.scene.control.Alert等类 源文件384M,分为4部分上传,其他部不要资源分额

2017-11-12

Handler,Looper和Message

Handler,Looper和Message的理解和练习

2017-08-04

ViewPager和Fragment的简单使用

ViewPager和Fragment的简单使用

2016-12-09

EventBus demo

实现service和activity之间的消息传递

2016-10-15

Sercie的aidl学习

Sercie的aidl学习

2016-10-11

Service基础学习笔记

个人学习笔记,仅供参考

2016-10-10

空空如也

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

TA关注的人

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