自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 安卓串口通信

1 引言串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。  串口通信(Serial Communications)是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。2 串口参数串口中有五个重要的参数:串口设备名称、波特率、奇偶校验位、数据位、停止位。  设备名称:串口的名称。Linux下查看串口名称使用 ls -l /dev/ttyS*。  波特率:传输速率的参数。波

2020-09-10 16:24:20 3544 1

原创 Android Things——SPI通信

1 SPI1.1 概念SPI是串行外设接口(Serial Peripheral Interface)的缩写,SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。SPI的原理以及通信过程不是本文要研究的内容,如有兴趣可以自行查找资料。1.2 特性(1)SPI总线是一种同步的串行接口: SPI是属于串行通信的一种,这就意味着SPI依赖于共享的时钟信号来同步设备之间的数据传输。控制时钟信号的设备被称为Master。其它所有

2020-09-09 20:45:55 1713 1

原创 干货分享——安卓USB通信

1 引言随着安卓手机的市场份额逐步增加,安卓系统的功能也日益强大。使用手机与各类设备通信的场景也越来越多,本篇文章将介绍如何使用安卓手机与USB设备进行通信。2 USB简介USB是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。现在智能手机也加入了对于USB设备的支持。  安卓手机支持USB accessory模式和USB host模式。USB host模式是手机充当主机,为总线提供电力支持。US

2020-09-09 14:42:32 1701

原创 安卓干货——安卓NFC通信

1 引言NFC是近场通信(near field communication)的缩写。NFC技术是一种新兴的技术,使用了NFC技术的设备(比如手机)可以在彼此靠近的情况下(一般小于10cm)进行数据交换,是由非接触式射频识别(RFID)及互连互通技术整合演变而来,通过在单一芯片上集成感应式读卡器、感应式卡片和点对点通信的功能,利用移动终端实现移动支付、电子票务、门禁、移动身份识别、防伪等应用。2 NFC技术2.1 工作模式NFC根据业务模式不同大概分为三种模式。(1)读卡器模式  数据在NFC芯片

2020-09-09 14:27:15 1736 1

原创 安卓干货——PC 连接手机实现摄像头预览

1 功能需求(1)手机端打开摄像头实时预览;(2)手机端作为服务端,PC端作为客户端连接;(3)连接成功后PC端可以同时预览手机端的摄像头采集的图像;(4)PC端点击拍照可以控制手机端拍摄一张照片,并将照片传给PC端。2 功能模块(1)安卓手机打开摄像头并实现预览和拍照功能;(2)手机端开启监听,并在连接成功后将摄像头采集的数据传给PC;(3)手机端读取PC发送的命令指令,执行相应的操作。3 开发流程3.1 开启摄像头实现预览(1) 获取摄像头权限,并添加自动对焦属性。  在应用程序

2020-09-08 21:09:26 2579 2

原创 延时程序的必要性

1 前言安卓蓝牙开发属于软硬件交互过程,在通信过程中难免出现一些意想不到的bug,本篇文章将介绍由于延时问题引发的一些bug。2 关闭搜索延时通常情况下,在连接设备之前要关闭手机的蓝牙搜索功能,但是当调用cancleDiscovery()或者stopLeScan()方法停止搜索设备时,并不能瞬间完成停止搜索工作。因此,在发起连接之前最好等待一段时间,等待手机关闭搜索后在发起连接。3 扫描服务延时当onConnectionStateChange()方法回调时,其中参数newState == Blue

2020-09-08 20:29:41 1010

原创 由getRemoteDevice()引发的问题

1 引言安卓蓝牙开发中,在BluetoothAdapter中提供了getRemoteDevice()方法。通常情况,此方法可以通过设备的mac蓝牙地址来获取BluetoothDevice对象。2 方法原型getRemoteDevice(byte[] address)  getRemoteDevice(String address)  参数address需要填写设备的蓝牙mac地址,一般mac地址的形式为:44-45-53-54-00-00。该方法的返回值为BluetoothDevice对象。3

2020-09-08 14:38:57 3041

原创 Android(安卓)干货分享——安卓BLE 蓝牙开发

1 前言BLE蓝牙的兴起主要因为近年来可穿戴设备的流行。由于传统蓝牙功耗高不能满足可穿戴设备对于续航的要求。所以大部分可穿戴设备采用蓝牙4.0,即BLE蓝牙技术。BLE(Bluetooth Low Energy)低功耗蓝牙,主要特点是快速搜索,快速连接,超低功耗保持连接和数据传输。  缺点:BLE蓝牙数据传输速率低,特别是在安卓开发过程,BLE蓝牙一包数据最多为20字节,因此安卓系统下最好不要使用BLE蓝牙传输大量数据。2 申请权限安卓手机涉及蓝牙权限问题,蓝牙开发需要在AndroidManifes

2020-09-08 14:19:07 838 1

原创 安卓干货——经典蓝牙数据通信

1 前言在之前的文章中我们已经实现了手机端与设备的连接过程。接下来将继续学习如何与设备进行数据收发。2 通信线程ReadThread经典蓝牙通信需要启动线程进行数据的读写,首先我们创建一个专门用于通信的线程ReadThread。ReadThread核心代码如下:private class ReadThread extends Thread { public void run() { Log.e("TAG", "开启通信线程"); by

2020-09-07 17:37:13 488

原创 这些Android面试题,成就你高薪就业。

前言这些题目都是面试必答题,看看你还有哪些是没有掌握到的。1.说下你所知道的设计模式与使用场景建造者模式:观察者模式:代理模式:门面模式:单例模式:生产者消费者模式:2.Java语言的特点与OOP思想这个通过对比来描述,比如面向对象和面向过程的对比,针对这两种思想的对比,还可以举个开发中的例子,比如播放器的实现,面向过程的实现方式就是将播放视频的这个功能分解成多个过程,比如,加载视频地址,获取视频信息,初始化解码器,选择合适的解码器进行解码,读取解码后的帧进行视频格式转换和音频重采样,然

2020-09-07 15:00:39 550

原创 安卓经典蓝牙连接

1 前言2009年4月21日,蓝牙技术联盟(Bluetooth SIG)正式颁布了新一代标准规范"Bluetooth Core Specification Version 3.0 High Speed"(蓝牙核心规范3.0版 高速),蓝牙3.0的核心是"Generic Alternate MAC/PHY"(AMP),这是一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。  蓝牙3.0的数据传输率提升到24Mbps,相比于已经淡出市场的蓝牙2.0大大提升了传输速率。在上一篇文章安卓蓝牙

2020-09-06 19:49:05 602

原创 安卓蓝牙搜索

1 前言蓝牙:是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换。蓝牙的波段为2400–2483.5MHz。其特点是低成本/传输距离近和低功耗。  蓝牙技术发展到现在,其应用领域十分广泛。随着手机的日益普及,大部分可穿戴设备以及医疗设备都需要与手机进行通信,将设备中的数据上传至手机中供用户查看。由于蓝牙技术的便捷性,大多数厂家在选择通信方式时采用了蓝牙通信方式。2 添加权限安卓系统对于蓝牙开发设置了系统权限,因此首先在AndroidManifest.xml文件中添加权限。

2020-09-04 21:00:48 396

原创 金九银十之际,用这套高级面试题你会更加成功!(持续更新)

前言大概从五月底开始,我就开始从各种渠道找各大公司内推、提前批实习了,大大小小投了很多家公司,除了一些记不起来的问题,这里把至今所有遇到的经典问题涉及到的知识点整理下来,希望对各位Android开发者有所帮助整理如下:一.说下冷启动与热启动是什么,区别,如何优化,使用场景等。答:app冷启动:当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Appl

2020-09-04 17:46:19 161

原创 开发中常用一些小方法

阅读本章,您将知道以下内容:一、查看CPU温度二、开机向导调试相关方法三、查看APP启动时间四、判断 user,userdebug 版本的方法五、修改截屏默认存储路径六、解析 kernel dump 方法七、SPRD 默认打开 Ylog 以及dumpsys enable方法八、判断是否正在 monkey 测试的方法九、修改MTK log 模式的方法十、MTK平台只开Mobile log方法十一、SPRD平台 只开Android log方法十二、SPRD平台功耗 Log 注意事项十

2020-09-04 16:19:39 515

原创 Android:换肤

这里使用的是开源框架Android-skin-loader。这个框架已经停止维护了,能满足基本功能需求。基础使用添加依赖将这个库的lib作为module导入,这样方便你根据自己的需求去添加一些功能。使用继承BaseActivity或者BaseFragmentActivity或者BaseFragment在Application中初始化public class YourApplication extends Application { public void onCreate() { s

2020-09-04 13:57:09 225

原创 零基础如何自学 Android 开发?

小伙伴你好,欢迎看本篇文章。之前有粉丝私信说要我写新手怎么入门、零基础怎么学Android。应粉丝要求本篇就来说一说:我是零基础小白怎么去学习Android。android 是一个专门针对移bai动设备的软件集,它包含du一个操作系统,中间件和zhi一些重要的dao应用程序(可以理解为一个手机操作系统)。内核采用的是linux内核2.6,android sdk提供了在android平台上使用java语言进行开发Android应用程序开发的工具和API接口。 实际就是使用java语言和android api

2020-09-02 16:11:00 2863

原创 谈谈GC和引用

前言A拿了一串代码和一篇文章来问我,当productA变为null时(表明它所引用的Product已经无需存在于内存中),这时指向这个Product对象的就是由弱引用对象weakProductA了,那么显然这时候相应的Product对象时弱可达的,所以指向它的弱引用会被清除,这个Product对象随即会被回收,指向它的弱引用对象会进入引用队列中。根据文章上述引用内容, 当他在执行下文代码的putnull方法时, 为什么userWeakReference.get()对象不为null, 难道userWeak

2020-09-01 21:04:46 381

原创 利用 gradle 多 aar 发布私有 maven

前言为了精简目前底层的基础组件库, 拆分出必要依赖项目(有一定精简)和完全的依赖项目,第一想法是在library上构建变种(Variant)版本, 一次发布所有的变种,在研究了一些相关的资料后,最后完美解决基础部署到maven仓库我们可以通过gradle部署到远程或者本地的maven仓库。首先添加maven插件, 然后我们通过updaloadArchives任务自动生成POM文件, 并打包部署到指定的仓库中当然我们也可以通过authentication来添加服务器的认证信息, 也可以定义快照

2020-09-01 20:27:35 205

原创 消息机制及异步任务相关知识点

简介精简的语言总结概括了【Handler】【AsyncTask】【HandlerThread】【IntentService】的机制原理,方便大家横向比较。如果需要详细的源码解析,网上有很多资料,请自行搜索。Handler消息机制在子线程中,进行耗时操作,执行完操作后,发送消息,通知主线程更新UI。消息机制主要包含:MessageQueue,Handler和Looper这三大部分,以及Message 1.每个线程只能有一个Looper,主线程不需要创建,子线程需要单独创建。Looper保存在Thre

2020-09-01 15:32:54 205

原创 安卓进程间通信及 App 保活

简介多进程以及进程间通信机制虽然不是所有的app都能用到,但是这些知识必须要了解,同时app保活也是给用户提供更好的服务的方式,本文大家一起来了解一下。多进程1.一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。每个进程都有自己独立的资源和内存空间,别的进程是不能任意访问其他进程的内存和资源的。2.单进程的局限:每个进程所能使用的资源是有限,特别是内存,安卓系统对用户进程有严格的内存要求,超过此内存限制时,应用将OOM和崩溃。所以,Android引入了多进程的概念,它允许在同一个应

2020-09-01 15:29:13 326

原创 LRU算法&高效加载Bitmap&安卓小姿势

简介最近找工作越来越不好找,越是这样,基本功越要扎实,所以把之前整理的一些基础知识点发一下,作为复习参考。Activity的启动模式Activity采用的是任务栈的模式,先进后出的栈结构1.标准模式(standard)每启动一次Activity,就会创建一个新的Activity实例并置于栈顶。2.栈顶复用模式(singleTop)如果需要新建的Activity位于任务栈栈顶,那么此Activity的实例就不会重建,而是重用栈顶的实例。如果栈顶不是新建的Activity,就会创建该Activit

2020-09-01 15:25:05 182

原创 Flutter 之 Dart 入门

加粗样式简介:很多移动开发者,都开始尝试了flutter开发,在开发flutter之前需要先掌握dart的基本语法。作为安卓开发转flutter的学习成本其实不大,只要看完这篇文章,进本就算是入门dart了,应对80%的开发任务没问题。Dart基础语法基本规则注释及缩进单行注释 //XXXX多行注释。 /* XXXXX */文档注释。 ///或者/**开头分号用于分隔语句,添加在语句结尾Dart的规范是2行缩进输出语句。print( object )变量1.var 接收任何类型的变

2020-09-01 15:19:09 217

原创 青春饭碗——程序员,年纪大了怎么办?

我在跟多平台上看到了这些问题,看得出来大家其实还是很着急的。现在的年轻程序员一抓一大把,那么年纪大了怎么办呢。我是做Android的我从Android来说吧!前言吃青春饭的并不只有程序员,包括竞技体育选手、设计师、还有新媒体运营等等都是吃青春饭的,年纪大了难道集体下岗不成?其实并不是这样的,高级开发、资深开发、技术专家、架构师、技术管理,都不是青春饭,程序员在做项目、工作码代码后还可以学习其他技术,俗话说得好技多不压身,当你技能多了怎么会只吃青春饭?第一次看我的文章的小伙伴可以加我的学习群点击加入

2020-08-31 22:03:06 1194 2

原创 组件化极简方案--双方案可选

简介随着项目越来越完善,功能越来越多,代码也变得越来越复杂。为了更方便开发,以及多个模块并行开发,之前的模块分包的方式已经不能满足当前的需求,所以组件化开发势在必行。本文介绍了当前比较流行的组件化方案,模块间通信采用阿里的ARoute路由,并且在项目中提供了两种不同的组件化运行的方式,各有优劣,可根据自己的项目来选择不同的方式。思路1.模块解耦,把公共的功能三方及工具类下沉到底层,其他模块为可独立运行的模块2.模块间通信采用ARoute方案3.组件运行方案一:配置各个模块的.gradle文件,通过

2020-08-29 22:21:20 173

原创 安卓性能优化(3)异常处理&应用瘦身

简介异常处理ANR原因方案OOM原因优化其他优化线程优化Service使用优化应用瘦身总结简介常见的异常无非就是ANR和OOM,掌握如何避免这两种异常有助于提升应用性能。另外,应用瘦身虽然不是性能的优化,而是app的优化,所以也放到这篇文章一起分享。异常处理ANR原因简述一下哪些地方是主线程:1.Activity的所有生命周期回调2.Service默认执行在主线程3.BroadCastReceiver的onReceiver回调4.没有使用子线程的looper的ha

2020-08-28 15:09:04 175

原创 安卓性能优化(2)内存优化&启动优化

全文大概如下:简介内存优化内存检测工具内存优化方案启动优化冷热启动优化方案简介内存优化内存检测工具1.Memory MonitorsMemory Monitors是Android Studio中的工具,通过图形界面的方式比较直观的看到内存抖动的情况,还可以手动触发GC,配合内存快照,可以准确的看到哪些地方存在内存泄漏。2.LeakCanaryLeakCanary是一个检测内存泄漏的开源类库,使用比较简单。可直接在gitHub找到。在应用内做相应的配置后,安装完应用后,会自动安装

2020-08-28 13:49:35 220

原创 安卓性能优化(1)布局优化

全篇大概如下简介工具1、HierarchyViewer2、Android Lint3、Android系统内置的【调试GPU过度绘制】技巧include标签ViewStub标签merge标签Space标签LinearLayout的优化其他技巧总结简介性能优化必不可少的就是布局优化,布局层次过深,复杂度变大,重复布局增多等问题,引起过度绘制,最终甚至可能引起卡顿,最终影响用户体验,本文简单的介绍一些布局优化的实用工具及技巧。工具1、HierarchyViewerHierarc

2020-08-27 18:03:11 296

原创 Failed to install the following Android SDK

重装Android Studio之后发现出现以下错误,导致不能正常make Android工程。Fail 原因如下:主要原因是电脑上之前已经安装过SDK,没有接受 许可协议导致的。首先打开命令行,进入到报错的sdk路径,找到可以处理licences的文件接受完协议之后就可以正常运行Android Studio了。至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。...

2020-08-27 16:06:02 1602 5

原创 Android Crash 工具

本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:有专业问题或者需要更多干货可以进群找柯南老师链接:https://jq.qq.com/?_wv=1027&k=6W0g8p3E一、Crash 简介当Linux系统内核发生崩溃的时候,可以通过 KEXEC+KDUMP 等方式收集内核崩溃之前的内存,生成一个转储文件vmcore。内核开发者通过分析该vmcore文件就可以诊断出内核崩溃的原因,从而进行操作系统的代码改进。那么Crash就是一个被广泛使用的内核崩

2020-08-27 14:35:47 904

原创 90后开发者关于服务调用和消息发送的解题思路

前言阿里中间件性能挑战赛至今为止已经成功举办四届,大赛是由阿里巴巴集团发起,阿里巴巴中间(Aliware)、阿里云天池联合举办,是集团唯一的工程性品牌赛事。大赛的初衷是为热爱技术的年轻人提供一个挑战世界级技术问题的舞台,希望选手在追求性能极致的同时,能深刻体会技术人的匠心精神,用技术为全社会创造更大的价值。本文是优胜奖选手“RDP飞起来”的解题思路。一、赛题背景分析及理解初赛题目是吸引我参加比赛的最大原因。其中一段描述了Service Mesh的作用:而这种思想与《反应式设计模式》不约而同。在反应

2020-08-26 16:04:20 184

原创 Android 关于内存泄露,你真的知道吗?

前言内存管理的目的就是让我们在开发过程中有效避免我们的应用程序出现内存泄露的问题。内存泄露相信大家都不陌生,我们可以这样理解:「没有用的对象无法回收的现象就是内存泄露」。如果程序发生了内存泄露,则会带来以下这些问题应用可用的内存减少,增加了堆内存的压力降低了应用的性能,比如会触发更频繁的 GC严重的时候可能会导致内存溢出错误,即 OOM ErrorOOM 发生在,当我们尝试进行创建对象,但是堆内存无法通过 GC 释放足够的空间,堆内存也无法再继续增长,从而完成对象创建请求的时候,OOM 发生很有

2020-08-25 15:18:19 168

原创 android-apt如何使用

前言APT的概念大家应该不会陌生, 而且在很多第三方库中都有使用到, 最有名的应该就是ButterKnife了. 这里基础概念就略过了, 本篇主要是着重在怎么编写自己的注解处理器, 以及一些踩到的坑.开始一般要实现编译器注解处理生成, 需要新建两个module, 分别存放自定义的Annotation和对应Annotation的处理器.自定义注解我们先新建存在自定义注解的module, 注意, 这里建议新建java-library, 便于本地调试时给存放处理器的module依赖使用, 对应gradl

2020-08-24 14:51:20 255

原创 干货分享——Android ANR 详情解析

阅读五分钟,和您一起终身学习,这里是程序员Android小小七、可以叫我阿七ANR(Application Not Responding )应用无响应的简称,是为了在APP卡死时,用户 可以强制退出APP的选择,从而避免卡机无响应问题,这是android系统的一种自我保护机制。通过本篇阅读,您将学习到以下内容一、ANR 概述二、ANR的类型三、ANR 产生的原因四、如何分析解决 ANR问题五、ANR 问题分析解决建议六、MTK 平台 ANR问题分析**一、 ANR 概述**在Andr

2020-08-21 20:40:00 268

原创 Android开发什么该做、什么不该做,你真的知道吗?

这篇文章来讲,做独立开发,在新功能的开发上、个人工作量的排布上,该做什么,该不做什么。链接有大厂面试复盘试题资料+Android架构资料免费分享,有需要的小伙伴可以点击链接领取https://shimo.im/docs/th9Chj6tpcKCXWcD/事倍功半做独立开发的,大部分都有在公司全职任职开发的经历,做过很多产品经理要求的、细枝末节的功能。很多东西可能 1000 个用户里面只有 1 个人用,但由于产品经理认为这个东西有价值,那作为工程师,也不得不去把它完成。而这样的东西,在我们独立开

2020-08-21 14:12:48 335

原创 大厂面试题之腾讯阿里公司面试题解析

今天给大家解答腾讯阿里面试题,需要大厂更多面试题和解析的可以私信我666免费领取话不多说直接进入主题阿里面试题精选1、进程间通信方式2、什么是协程3、内存泄露是怎么回事4、程序计数器,引到了逻辑地址(虚地址)和物理地址及其映射关系5、数组和链表的区别6、二叉树的深度优先遍历和广度优先遍历的具体实现7、堆的结构8、bitmap对象的理解9、什么是深拷贝和浅拷10、对象锁和类锁是否会互相影响11、looper架构12、自定义控件原理13、ActivityThread,Ams,Wms

2020-08-13 14:25:22 724

原创 android开发面试题解析

俗话说职场如战场,选择好的阵容去“投靠”这一点至关重要,但是这也是需要技术的。我想在三国中最早的面试应该就是“三顾茅庐”了,典故的细节就不说了,面试的难只有我们自己身临其境才能懂。当然,如果你技术非常到位就可以省去不少事。作为技术出身的我们,找工作的一大前提就是技术是否能过关。而对于java程序员来说,至少是两关的面试,这首个关卡就是笔试我总结了一些面试题及其解析(兴趣的朋友可以点点关注,小编会持续为大家更新)可能我列出的这几个问题不是很全面,望见解,我从中选取几个我觉得着重点比较高的问题来解析一下。

2020-08-12 20:25:50 378

原创 我的Android开发道路之他们劝我不要搞Android开发了!

他们劝我不要搞Android开发了!开篇先给大家看个图他是我很早以前在网上认识的一个android开发元老级别的人物。其实这么久过来我们一直互相交流技术问题,今天他和我说不做android开发我犹如分手一般无奈。其实android前景还是有的,虽然没有了前两年那么火热,但是随着5G的技术越来越成熟移动开发技术也会需要新的突破,也会带来不少的机遇和风口。我和很多这个行业的人谈过,了解过他们的困惑,我相信这也是大家共同的困惑。1.企业对技术的要求越来越高,Android开发只能咬牙坚挺我把这个给

2020-08-10 20:37:55 1219

空空如也

空空如也

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

TA关注的人

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