自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

原创 Android studio自带虚拟机修改hosts

一、前言需要需改Android studio自带模拟器的hosts,可通过window的控制台从虚拟机里将hosts文件拉到电脑,在电脑修改后push回虚拟机。二、启动虚拟机如果虚拟机已经开了,先关掉,因为通过Android studio开启的虚拟机是默认无权限的,所以要通过控制台加参数-writable-system来启动。1、查看已安装的虚拟机因为要用到emulator指令,所以控制台要进入sdk目录下的emulator.exe同级目录下操作:查看已安装虚拟机指令:emulator -l

2021-05-11 16:14:33 2186 1

原创 Android SoundPool插入耳机后依然有外放声音

使用soundPool播放声音,当手机已经接通耳机时,还会有外放声音,是因为在初始化soundpool是用的流类型(streamType)导致的,有些流类型系统是一定会播放外放的,比如警告类型和响铃类型:mSoundPool = new SoundPool(1, AudioManager.STREAM_ALARM, 0);只需要把流类型改为AudioManager.STREAM_NOTIFICATION类型即可。mSoundPool = new SoundPool(1, AudioManager.S

2021-03-12 16:13:28 477

原创 Android网络编程(六):HTTPS

一、简介HTTPS 是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份 认证,保护交换数据的隐私与完整性。若是不了解HTTP,请看Android网络编程(五):HTTP协议。HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下

2021-03-11 15:42:47 364

原创 RecyclerView跨行自适应调整

一、先看效果二、实现原理重写RecyclerView.LayoutManager,在onLayoutChildren时,重新测量计算布局,当多个item的宽度之和大于屏幕宽度时就换行,直接看以下代码,注释很详细:重写的LayoutManager:AutoFixLayoutManager.ktimport android.view.Viewimport android.view.ViewGroupimport androidx.core.view.getimport androi

2020-11-26 09:40:53 859

转载 Android 11 (R) 分区存储

Android 10 / Q 先回顾Android 中存储可以分为两大类:私有存储和共享存储私有存储 (Private Storage): 每个应用在内部存储种都拥有自己的私有目录 (/data/data/packageName),其它应用看不到,彼此也无法访问到该目录共享存储 (Shared Storage): 除了私有存储以外,其他的一切都被认定是共享存储,比如媒体集 (Media Collection) 和SD卡外部应用存储目录一、导火线在分区存储之前,某些应用中,即...

2020-10-20 21:07:24 7345 1

原创 ContentResolver操作uri权限问题

在Android中使用ContentResolver通过uri代开输入流:ContentResolver contentResolver = getContentResolver();InputStream inputStream = contentResolver.openInputStream(uri);报了以下错误:java.lang.SecurityException: Permission Denial: reading com.android.externalstorage.Exter

2020-10-19 20:09:06 8413 4

原创 Android NDK原生开发(一)环境搭建与HelloWorld

一、环境搭建1、安装最新版的Android studio本人使用的是Android studio 4.0已经很好地集成了开发环境,极大地方便开发者开发。2、下载NDK和Cmake在SDK Manager中下载按钮NDK和Cmake:勾上之后点击右下角apply即可下载安装。NDK 是 Native Development Kit 的缩写,是 Android 的工具开发包。 作用是快速开发 C/C++的动态库,并自动将动态库与应用一起打包到 apk。CMake是一个跨平台的安装(编译)

2020-09-24 11:15:11 703

原创 Java并发(三)一篇弄懂锁机制

一、简介在做多线程开发时,如果多个线程同时操作一个可共享的资源变量时(如数据的增删改查),就会出现混乱的现象,数据产生冲突,得到的值并不是该线程预期想要的。那么我们就需要对线程的操作进行控制,让其排队去处理对应的数据,处理完了再交给另一个线程,这个过程就叫线程同步,实现线程同步就需要用到锁机制,顾名思义,当一个线程需要用资源的时候,就把它锁起来,直到用完再解锁,交给其他线程使用。二、锁的实现Java中锁的实现主要是通过synchronized关键字 和java.util.concurrent.lock

2020-09-21 17:04:38 1356

原创 Java并发(二)线程池详解

一、前言程序的所有业务逻辑都是跑在线程上的,每个进程都由一个主线程和N个子线程组成,每个线程都要消耗系统资源,如果不停地创建线程,那么系统资源最终会耗尽,会出现卡顿卡死的情况,这时候就需要对线程进行管理,控制线程的数量、线程重用等方案就出来,避免过度地消耗系统资源,同时也提高了运行效率。那么如何对线程进行管理呢?这就要涉及到Java的池化技术,我们来研究一下什么是池化技术。1、池化技术池化技术简单点来说,就是提前申请好大量掉系统资源,以备不时之需。池化技术能够减少资源对象的创建次数,提高程序的性能,特

2020-09-15 17:44:35 206

原创 Java并发(一)线程Thread

一、什么是线程在了解线程之前,我们首先来了解一下进程, 进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击左面的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。而线程是进程中的一个实例,作为系统调度和分派的基本单位。是进程中的一段序列,能够完成进程中的一个功能。如果把进程比作一个人,那么呼吸、思考、心跳等就是一个个线程,这些线程是

2020-09-03 10:36:53 395

原创 Java Object类

一、简介Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,Object是所有类的父类,也就是说任何一个类的定义的时候如果没有明确的继承一个父类的话,那么它就是Object的子类;比如下面两种情况其实是一样的:class World{ }class Worldextends Object { }因为它是所有类掉父类,所以它可以通过向上转型去实例化任何子类,比如:class Cat(){}class Dog(){}public class Test{

2020-07-30 20:57:38 210

原创 JVM:GC机制

一、前言

2020-07-29 17:00:18 311

原创 JVM:类加载机制

一、前言

2020-07-29 14:50:22 119

原创 Android常见缺陷

1、XXX is not signed. Please specify a signing configuration for this variant (debug)打开新项目时出现,导致无法运行,是签名原因导致。1、首先检查Build Variants,把release改为debug:2、如果上面的方法1设置之后还是不行,那么就需要在build.gradle文件中,将signingConfig给注释掉:...

2020-07-18 11:50:08 366

原创 Android第三方应用分享:接收显示图片

1、前言本demo实现的功能是接收第三方应用的系统分享内容,并显示出来,废话不多说,先上效果图:(左图为分享页面,右图为接收分享页面)2、实现原理通过Intent获取到第三传过来的分享内容,一般是文字描述加链接,获取其中的文字,按自己想要的方式显示出来即可,然后通过其中的地址链接,去获取网页源码,解析其中的图片地址,拿到图片地址将其显示到imageview即可,有些网站无法获取完整源码或拿不到图片地址,则直接取网站的favicon.ico。3、代码实现1、在对应的activity中注册拦截:

2020-07-16 11:06:27 2202 1

原创 快速排序算法:小学生也能看就懂!

1、简介快速排序(Quicksort)是对冒泡排序的一种改进,快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2、原理详细分析从要排序的数组中选择一个参考值,一般为第一个或者最后一个,记为B,这里我们选最后一个作为参考值。用一个指针L指向左边第一个,再用一个指针R指向右边起第二

2020-06-06 21:01:15 376

原创 Android架构:MVVM实现离线登录

一、MVVM简介MVVM模式是指Model-View-ViewModel。关于MVP架构,无论如何抽象化,在我们的View层中是无法避免的要处理一部分逻辑的。而MVVM模式中的View是将View的状态和行为完全抽象化,把逻辑与界面的控制完全交给ViewModel处理。MVVM由下面三个核心组件组成:Model: 用于获取业务数据模型View: 定义了界面中的布局和外观ViewModel: 逻辑控制层,负责处理数据和处理View层中的业务逻辑二、离线登录逻辑梳理1、打开软件,进入登录页面,

2020-05-26 15:33:30 1403

原创 Android网络编程(五):HTTP协议

一、简介HTTP(HyperText Transfer Protocol)即超文本传输协议,我们前面TCP/IP协议章节讲过,HTTP协议属于TCP/IP协议族中的一员,TCP/IP协议族横跨OSI模型中的应用层、传输层、网络层和数据链路层,而HTTP协议正是属于应用层,提供接口给应用软件使用。HTTP是一种无状态的协议,无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接

2020-05-18 13:42:38 291

原创 Android Socket read阻塞

问题描述在Android socket同步连接时,服务的可能会在bufferedInputStream.read中阻塞,其实此时已经读完数据了,由于在while循环中去读取的,所以回导致无法跳出循环继续后面的代码,如下:while ((n = bufferedInputStream.read(bytes, 0, bytes.length)) != -1) { fos.write(bytes, 0, n);}....解决方法让客户端发送内容时顺带发送内容长度,根据接收到的长度判断是否跳出

2020-05-14 11:07:41 600

原创 Android网络编程(四):Socket原理

1、什么是Socket套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的...

2020-05-06 14:03:58 1598

原创 Android 修改ble蓝牙20字节限制

ble蓝牙BluetoothGattCallback:onCharacteristicChanged接收数据时,被限制只能接收20字节(实际为23字节,其中3字节为ATT占用),要突破20字节需要在BluetoothGattCallback:onConnectionStateChange连接成功时加入一下设置:int mut = 512bluetoothGatt.requestMtu(mut)...

2020-04-30 16:18:19 5719 6

原创 Android连接ble蓝牙

1、搜索蓝牙通过广播的方式获取蓝牙设备1.1、初始化蓝牙相关和注册广播 /** * 初始化蓝牙 */ private void initBluetooth() { //getString Bluetooth service mBluetoothManager = (BluetoothManager) getSystemServ...

2020-04-30 09:10:04 1913 1

原创 Android网络编程(三):TCP、UDP协议

简介TCP和UDP协议都位于OSI七层模型中的传输层,处于IP协议的上一层,隶属于TCP/IP协议簇,如果你不清楚TCP/IP协议,请看我写的另外一篇文章:Android网络编程(二):TCP/IP协议详解TCP和TCP是传输层的两个主要协议,互为补充,都是用于处理数据包。UDP支持无连接传输,是不可靠的,但是传输性能好;TCP是面向连接的,可靠性更高,用得也最多。UDP协议UDP协议全...

2020-04-15 16:46:53 1405

原创 Android网络编程系统性学习目录

简介从最基础的网络传输原理到Android网络编程资料整理,浅显易懂地讲解网络编程。持续更新中~1、网络基础Android网络编程(一):网络基础知识Android网络编程(二):TCP/IP协议详解...

2020-04-15 11:39:37 298

原创 Android网络编程(二):TCP/IP协议详解

定义TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。...

2020-04-14 15:56:59 1111

原创 Android网络编程(一):网络基础知识

1、两台计算机是如何通讯的?简单地说,两台计算机之间连上通讯介质,也就是电缆或者光纤,A计算机把要发送的类容转换成二进制代码,然后再根据二进制码发送对应的电流脉冲,电流脉冲通过电缆传播到B计算机,B计算机把电流脉冲解析成二进制码,再转换成对应的内容。2、网络协议什么是网络协议,为什么需要网络协议?网络协议其实就是发送端和接收端互相约定好的规则,不然鬼知道你发的那一大堆二进制码是什么东西,所以...

2020-04-14 09:44:56 751 1

原创 腾讯用户行为收集使用

1.介绍1、腾讯移动分析是腾讯公司为移动应用的开发者提供应用活跃的、用户行为、渠道推广效果等精确数据统计,助开发者提高产品质量、优化产品策略、演唱产品生命周期的开发平台。2、用户行为分析功能可以实时统计用户访问的页面频率、停留时间及页面跳转关系,可以记录用户输入及点击事件。2.申请key及下载sdk到腾讯移动分析平台上申请好key后下载sdk接入项目,然后在AndroidManifest....

2019-07-03 08:52:16 979

原创 Java图片比对算法(直方图原理)

采用直方图原理算法比对图片的细微差别效果比较好,以下两张区别很小的图片识别效果如下:1.png3.png识别结果:主要代码如下:import javax.imageio.*;import java.awt.image.*;import java.awt.*;import java.io.*; public class PhotoDigest { publi...

2019-07-02 17:19:01 5531

转载 gradlew检查命令

gradlew compileDebug --stacktrace -info在命令行中进入项目的根目录,或者可以在Android studio的Terminal中直接操作也可以,然后敲入一个命令:gradlew compileDebug --stacktrace -info或者:gradlew compileDebug --stacktrace -debug我直接用了这个命令,这个显示...

2019-06-12 10:51:35 1322

原创 com.android.ide.common.process.ProcessException:Return code 2 for dex process

Return code 2 for dex process报错原因解决方法报错原因我在老Android studio项目中加入单元测试,并引入了相应的依赖,引发了此问题。是由于配置方法数超过 64K ,Android做了此限制,需要执行文件分包,以规避 64K 限制。解决方法如果您的 minSdkVersion 设置为 21 或更高值,您只需在模块级 build.gradle 文件中将 m...

2019-04-24 15:55:47 735 1

原创 Dropbox分块上传异常:Exception in 2/files/upload_session/finish

Dropbox分块上传异常:Exception in 2/files/upload_session/finish{".tag":“path”,“path”:{".tag":“conflict”,“conflict”:“folder”}}Dropbox官方大文件分块上传源码:chunkedUploadFile造成这个异常的原因是Dropbox路径没有加上文件名,在Dropbox路径尾部加上文件名...

2018-11-08 10:08:57 475

原创 谷歌地图添加文字覆盖物

GoogleMap谷歌地图添加文字覆盖物Google地图未提供添加纯文字覆盖物接口,可以先将文字加载到Bitmap,再通过MarkerOptions 加载Bitmap,效果一样的// An highlighted blockprivate void addTextToGoogleMap(String textStr,LatLng latLng){Rect boundsText = new ...

2018-10-29 14:17:51 1597

原创 Android文字识别tess-two OCR

OCR Tesseract tess-two文字识别Android Studio实现1、简介OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程 Tesseract是Ray Smith于1985到1995年间在惠普布里斯...

2018-03-16 14:22:31 5358 16

原创 Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerViewLayoutManager.onMeasur

RecycleView空指针异常错误代码如下:java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.support.v7.widget.RecyclerViewLayoutManager.onMeasure(android.support.v7.widget.RecyclerViewRecy

2018-02-05 17:19:52 8452

原创 Call From master.hadoop/192.168.31.149 to master.hadoop:8020 failed on connection exception: java.ne

学习hadoop新手易犯错误:Call From master.hadoop/192.168.31.149 to master.hadoop:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see:  http://wiki.apache.org/hadoop/Connec

2017-08-02 16:01:15 7520 2

原创 Error: JAVA_HOME is incorrectly set. Please update F:\hadoop\conf\hadoop-env.cmd解决方法

在控制台中输入hdfs后提示Error: JAVA_HOME is incorrectly set.  Please update F:\hadoop\conf\hadoop-env.cmd错误如下图如果你的JAVA_HOME环境变量配置也没问题,在控制台中输入java -version得到如下输出则说明没问题:打开E:\hadoop-2.7.3\etc\h

2017-07-27 13:43:26 33258 24

原创 选择排序算法

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。下面先看代码,待会对照代码解释:#include "stdio.h"int main(){ int a[5] = { 4,3,5,1,2 }; int i, j, k, temp; for

2017-06-14 22:52:51 405

原创 android端登陆功能实现

将用户名和密码通过httpClient提交到后台登陆界面图如下: Login.classimport android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Looper;import android.util.

2017-06-13 21:47:18 433

原创 冒泡排序详解

先来看一下代码,然后再逐行对照解释,这代码是将number[5] = {5, 4, 3, 2, 1}数组里的数由小到大排列#include <stdio.h>int main(){ int n=5; int number[n] = {5, 4, 3, 2, 1}; int i, j, temp; for (j = 0; j < n - 1; j++) //外循环

2017-06-13 20:36:25 474

原创 android解析多重嵌套json数据

android解析多重嵌套json数据android端获取的数据如下: JAVA代码获取json数组里的某个值 String articleID; String username; String address; String avatar; String title; String image; String content; St

2017-06-13 17:31:22 3704

ShareDemo.rar

本demo实现掉功能是接收第三方应用的系统分享内容,并显示出来,类似于微信卡片式显示,同时显示网页中的图片。

2020-07-15

NFC MifareClassic读取demo

该demo通过MifareClassic协议读取NFC卡片,读取成功率极高,读取失败的扇区重新读取

2019-08-06

简单学生管理系统

学生管理系统,有登录注册,查找录入等功能,用hibernate操作数据库

2016-01-06

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

TA关注的人

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