自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

到此一游

If I can not see you again, good morning, good afternoon and good night!

  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android Studio安装插件提示Plugin is not compatible with the current version的一种解决方法

最近想要给Android Studio安装Android Size Analyzer这个插件,当前Android Studio版本如下:Android Studio Bumblebee | 2021.1.1 Patch 2//Build #AI-211.7628.21.2111.8193401结果到插件市场搜索不到,只好到github仓库https://github.com/android/size-analyzer/releases/tag/v0.3.1下载jar包,选择从磁盘安装,结果安装时

2022-04-06 17:38:55 8255 1

原创 Android Studio 通过Gradle一键打包多渠道apk至指定文件夹的方法

当前环境:Android studio arctic foxgradle版本:6.8.2android gradle plugin 版本:4.2.2方法一: android.applicationVariants.all { variant -> // 打包完成后输出路径 def name = "app"+ "_" + variant.flavorName + "_" + varia

2021-09-26 14:38:59 1307 1

原创 Android Studio的模拟器卡死、死机问题解决方法

目前使用的Android Studio 4.2.1,创建了一个Pixel 4 API29的X86架构模拟器,运行时经常会卡死在某个界面,如下:导致无法安装测试app,之前的处理方式都是直接删掉、新建模拟器,今天在网上搜索了一下,发现可以使用如下方法,将热启动改为冷启动即可:首先打开模拟器管理页面,点击模拟器的编辑按钮:点击 “Show Advanced Settings”按钮向下滚动,找到“Boot option”,修改“Quick boot”为“cold b...

2021-07-06 10:13:10 16033 23

原创 安卓开发 蓝牙或者tcp用byte数组传输数据时的处理

用蓝牙或者WiFi(TCP)连接各种传感器开发时经常需要处理操作各种数据,byte的数值空间为-128到+127;    所以如果传感器、开发板那边定义的是无符号int型之类数据,Java端收到的数据用bytes传输的话,要将byte转换为正确的int等数值类型,就得判断byte值的正负,value=X>0?X:256+X,或者用下面这个方法;    public static int b

2018-01-01 00:21:13 2062

原创 Android相机开发 延时摄影的一些实现思路

最近在做一款相机相关app,因为里面功能蛮多,所以除了基本的相机操作,其他的像慢动作、延时摄影、滤镜、直播这些都很费工夫,那么今天就来和大家探讨一下延时摄影的一些实现思路。    延时摄影,简单来讲就是将一段时间很长的视频,录制到很短的时间里,相对于慢动作来说,可以称之为快动作。看过人与自然之类节目的,想想里面的那些植物从发芽到枝繁叶茂,或者某个地方一年四季地貌变换的快速镜头就知道了。具体到手

2017-11-12 22:47:44 3064 5

原创 Android 开发报错 Comparison method violates its general contract!

在做图片排序的时候,想按照图片名称来进行排序,自定义了一个比较器,之前没有问题,最近突然闪退,查看log就发现了Comparison method violates its general contract!这样一个提示,google了一圈发现是自定义compator的compare()方法实现的问题,说是jdk 7的sort函数的实现变了,造成了这个问题,但是我根本没改过jdk啊。。。具体改变大

2017-04-08 19:00:04 1700

原创 Android 代码混淆注意事项

注意事项1,jni方法不可混淆,因为这个方法需要和native方法保持一致;-keepclasseswithmembernames class * { # 保持native方法不被混淆 native ;}2,反射用到的类不混淆(否则反射可能出现问题);3,AndroidMainfest中的类不混淆,所以四大组件和Application的子类和Framework层下

2017-04-07 19:01:04 877

原创 Android 直播概念一二

Android上目前直播使用的传输协议一般有如下几种:rtp(real time protocol)、rtcp(real time control protocol)、rtsp(real time streaming protocol)、rtmp(real time messaging protocol)、hls(http live streaming)。    直播数据源的获取有以下几种,

2017-03-30 17:28:21 639

原创 Android Camera聚焦区域和测光区域的设置

先盗图一张(来自安卓官网),如图所示,无论屏幕是横屏竖屏,预览视图的中心点坐标一直都是(0,0),四个角的坐标也都固定如图所示,不会因为横竖屏而发生变化。从这张图可以看出:        1:聚焦以及测光的坐标和手指触摸的屏幕真实坐标所选坐标系是不同的,它的值在(-1000,1000)之间变化。        2:我们触摸到的是一个点,而聚焦及测光需要反馈给相机的是一个区域,所以就要以触摸点为中

2017-03-28 12:05:37 7502

原创 Android开发 获取系统已连接蓝牙设备

根据公司最近一个项目的需求,我们的APP要与蓝牙低功耗设备进行连接,不过有些情况下系统蓝牙会默认连接已配对的设备,这样就会导致我们的APP搜索不到这些系统已连接的设备,从而导致APP无法与之进行连接并进行接下来的操作。其实系统连接与我们的APP连接并不冲突,问题就在于如何找到并显示出系统已连接的设备。网上搜索了一堆方法都不行,要么是只能找到已绑定的设备,要么就是操作无效。好在后来终于找到有人通过反

2017-03-27 10:58:47 17962 18

转载 Android app应用多语言切换功能实现

最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成,下次重新打开 App ,也是用户设置的语言。2. 实现步骤1. 添加多语言文件在不同的 value 文件夹下(例如 value 、value-en、v

2017-03-16 20:43:34 15710 2

转载 Android Studio快捷键记录

常用快捷键:●查找所有快捷键查找快捷键[Find Action]:Ctrl+Shift+A●显示一些有用信息显示简要信息:Ctrl+mouse over code 快速查找文档[Quick Documention]:Ctrl+Q 在方法调用的地方显示参数信息:Ctrl+P 错误的显示说明或警示插入符号:Ctrl+F1●编辑格式化代码[Refomart

2017-03-09 20:16:31 909

转载 HashMap的工作原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入

2017-03-06 11:11:10 259

原创 Android UI之ImageView旋转的几种方式

我整理了一下,大概有四种,亲测成功三种。第一种效率较低,不过看许多博客都使用这种方法,即旋转bitmap:Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ic_launcher)).getBitmap();Matrix matrix = new Matrix();matrix.setR

2017-03-04 23:55:19 51977 3

转载 [JVM] 字节码指令集简介

Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。如果忽略异常处理,那 Java 虚拟机的解释器使用下面这个伪代码的循环即可有效地工作:do {   自动计算 PC 寄存器以及从 PC 寄存器的位置取出操作码;  

2017-03-03 23:15:33 825

转载 HotSpot VM GC 的种类

collector种类       GC在 HotSpot VM 5.0里有四种:incremental (sometimes called train) low pause collector已被废弃,不在介绍.类别serial collectorparallel collector( throughput collector )concurrent co

2017-03-03 22:56:04 464

转载 JVM系列五:JVM监测&工具[整理中]

前几篇篇文章介绍了介绍了JVM的参数设置并给出了一些生产环境的JVM参数配置参考方案。正如之前文章中提到的JVM参数的设置需要根据应用的特性来进行设置,每个参数的设置都需要对JVM进行长时间的监测,并不断进行调整才能找到最佳设置方案。本文将介绍如果通过工具及Java api来监测JVM的运行状态,并详细介绍各工具的使用方法。       需要监测的数据:(内存使用情况 谁使用了内存 GC的

2017-03-03 22:51:25 296

转载 JVM系列四:生产环境参数实例及分析【生产环境实例增加中】

java application项目(非web项目)改进前:-Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:ThreadStackSize=128-Xloggc:logs/gc.log-Dsun.rmi.dgc.s

2017-03-03 22:50:18 232

转载 JVM系列三:JVM参数设置、分析

不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同

2017-03-03 22:44:37 325

转载 JVM系列二:GC策略&内存申请、对象衰老

JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类       现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域,将不同生命周期的对象放在不同区域里:young generation,tenure

2017-03-03 22:28:42 399

转载 JVM系列一:JVM内存组成及分配

java内存组成介绍:堆(Heap)和非堆(Non-heap)内存       按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员

2017-03-03 22:26:49 253

转载 Java内存模型简述

1. 概述  多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性  由于

2017-03-03 22:18:05 275 1

转载 深入理解Java内存模型系列(七)——总结

处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:

2017-03-03 22:13:29 262

转载 深入理解Java内存模型系列(六)——final

与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说明

2017-03-03 22:11:19 270

转载 深入理解Java内存模型系列(五)——锁

锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a+

2017-03-03 22:08:59 259

转载 深入理解Java内存模型系列(四)——volatile

volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L;

2017-03-03 22:06:14 213

转载 深入理解Java内存模型系列(三)——顺序一致性

数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存一致性做了

2017-03-03 22:03:27 271

转载 深入理解Java内存模型系列(二)——重排序

数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个变量之后,再

2017-03-03 22:00:35 224

转载 深入理解Java内存模型系列(一)——基础

并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通

2017-03-03 21:52:35 444

转载 Android开发 Touch 事件的分发和消费机制

概述在做Android开发的过程中,如果想自定义一些手势操作,做一些酷炫的效果,那么必须理解Android中的touch事件是如何传递的。接下来将通过代码与图例对事件传递做一个详细的分析。看图说话android simple touch flow上面这幅图例分析了事件传递的简单情况,被分析的对象包括Activity,ViewGroup,View,以及dispat

2017-02-24 22:57:21 296

转载 Android开发 Handler MessageQueue Looper消息循环原理分析

Handler概述Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler来投递消息到主线程执行UI更新操作。因为Android系统的View是非线程安全的,所以需要在主线程更新UI。总的来说Handler就是用来做线程间通信,在不同线程之间传递消息。注:这篇文章所讲到的Handler是在主线程创建的,主线程在开始的时候已经创建了默认的消息循环。

2017-02-24 22:40:48 411

转载 Android开发 ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled的理解

setHomeButtonEnabled这个小于4.0版本的默认值为true的。但是在4.0及其以上是false,该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击 false 不可以点击。actionBar.setDisplayHomeAsUpEnabled(true) // 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DI

2017-02-24 11:10:58 666

转载 Android,在争议中逃离 Linux 内核的 GPL 约束

Android,在争议中逃离 Linux 内核的 GPL 约束为这个题材起名,我思考了许久,GPL 是著名的开放源代码许可协议,Linux 内核开源项目正是在 GPL 的庇佑之下,十多年来在服务器、PC 端以及各种嵌入

2017-02-21 20:45:29 811

转载 HTTPS工作原理和TCP握手机制

1、HTTPS的工作原理    HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的具体描述如下:1.浏览器将自己支持的一套加密规则发送给网站。 2.网站从

2017-02-21 01:07:36 320

转载 Android开发 高斯模糊的实现

高斯模糊是什么?高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。什么?看不明白?没关系,我也看不明白,维

2017-02-20 23:58:50 1360

转载 Android Studio实用插件集合

现在Android的开发者基本上都使用Android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行)。使用好Android Studio插件能大量的减少我们的工作量。  1.GsonFormat   快速将json字符串转换成一个Java Bean,免去我们根据json字符串手写对应Java Bean的过程。     使用方法:快捷键Alt

2017-02-19 21:22:34 1695

原创 Android6.0以上系统搜索不到 蓝牙BLE 设备问题

最近开发一款软件,一开始一切顺利,但是在连接外围BLE 设备时,发现需要Location的权限,    uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION。    在AndroidManifest里面加上了权限,同时,大家知道安卓从6.0开始,对于一些敏感权限,需要运行时权限,除非targetApi

2017-02-16 19:56:09 17103 4

原创 Android开发 压缩保存图片至本地

/** * 从本地path中获取bitmap,压缩后保存小图片到本地 * * @param path 图片存放的路径 * * @return 返回压缩后图片的存放路径 */ public static void saveBitmap(String path,String fileName,OnSaveSuccessListe

2017-02-13 21:59:50 3799

转载 Android调用Camera,获取预览帧中的图像

1:说明 Android开发实现Camera自定义的话,也并不是件难事,主要步骤如下:打开相机,即实例化Camera对象,Camera camera = Camera.open();设置Camera的相关参数,Camera.Parameters parameters = camera.getParameters();打开预览,camera.setPreviewDisplay(surfa

2017-02-12 23:50:56 18339 1

转载 Android Camera搭配SurfaceView开发相机基础

Android自定义照相机 预览拍照 切换前后置摄像头2014-02-18 23:29 38431人阅读 评论(15) 收藏 举报 分类:Android/OMS(332) 转自:http://my.eoe.cn/761385/archive/4226.htmlAndroid提供了Camera来控制拍照,步骤如下:(1)调用Camera

2017-02-12 23:45:41 801

Android 蓝牙官方聊天Demo

谷歌用来展示Android 蓝牙使用方法的一个聊天Demo

2016-06-23

空空如也

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

TA关注的人

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