- 博客(48)
- 资源 (5)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Wifi P2p点对点连接详解
Wifi P2p的描述Wifi P2P是在Android 4.0以及更高版本系统中加入的功能,通过Wifi P2P可以在不连接网络的情况下,直接与配对的设备进行数据交换。相对于蓝牙,Wifi P2P的搜索速度和传输速度更快,传输距离更远,底部的通讯原理是通过Binder通讯二、Wifi P2p的开发步骤1.在 AndroidManifest 中声明相关权限(网络和文件读...
2020-04-21 11:54:01
6351
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 蓝牙开启关闭
Android 蓝牙开启关闭允许蓝牙权限在AndroidManifest.xml中加入://所有手机需要的权限,蓝牙功能才能正常使用<uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission....
2020-04-21 11:28:45
1519
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Python实现贪吃蛇
代码简洁明了,各种注释让你轻松了解各个代码模块,复制粘贴即可实现import pygameimport timeimport numpy as np# 此模块包含游戏所需的常量from pygame.locals import *# 设置棋盘的长宽BOARDWIDTH = 48BOARDHEIGHT = 30# 分数score = 1class Food(o...
2019-12-19 14:24:52
230
原创 处理点击时间防抖
/** * 主要是处理点击事件防抖的 * @author * */public class ClickHelper implements OnClickListener { /** 默认防抖时间200毫秒 */ private static final int MIN_CLICK_DELAY_TIME = 200; private long mLastClickTime; private OnClickListener mL; private long mDelayedTime = .
2021-11-25 09:47:10
432
1
原创 RecyclerView的回收复用机制
前言学习源码,研究源码编程思想,是程序开发者进阶的必经之路。然而,进了源码世界,就像是进了迷失森林,没有地图,迟早要死在里面。有个地图会好很多。此类文集,专门用图解编程的方式,来讲解一个知识点,从一个点切入,理解切入点之后,再进行知识发散。路漫漫,进阶之路不好走。与众君共勉之。正文大家都知道RecyclerView有回收复用机制,那么回收复用机制是如何作用的?回收复用,细分下来,是两个概念: 回收 和 复用 有如下几个问题。回收的是什么?复用的又是什么?回收到哪里去了?复
2021-11-10 10:14:46
887
原创 Canvas绘制文字后翻转整个绘制的View后再翻转绘制的Text
绘制Text/** * Draw the text, with origin at (x,y), using the specified paint. The origin is interpreted * based on the Align setting in the paint. * * @param text The text to be drawn * @param x The x-coordinate of the origin of t...
2021-11-09 10:53:23
518
原创 关键字的首字母拼音和全拼搜索
/** * @author ChineseSpelling * 所有全拼集合 汉字转拼音 使用工具类 */public class ChineseSpelling { private static int[] pyvalue = new int[] { -20319, -20317, -20304, -20295, -20292, -20283, -20265, -20257, -20242, -20230, -20051, -20036, -20032, -2...
2021-10-28 18:22:21
683
原创 Android TextView随进度条圆球移动
1.进度条范围0-39 prams.leftMargin:TextView的左右移动大小String lowValue = "0"; String highValue = "39"; String currentValue = "0"; final String tempValue = String.valueOf(0 - Integer.parseInt(lowValue)); sb_quota.setMax(Integer.parseInt(highValue) - Int..
2021-08-12 10:53:34
166
原创 Android 编译apk的时候带上编译日期和时间
1.在build.gradle中的“apply plugin: 'com.android.application'” ,加上获取时间的:apply plugin: 'com.android.application'def versionTime = new Date().format("yyyyMMddHHmm")2.在android下加入:applicationVariants.all { variant -> variant.outputs.all { o..
2021-07-15 14:07:37
607
原创 动态规划解最长公共子串
给定两个字符串str1和str2,输出两个字符串的最长公共子串题目保证str1和str2的最长公共子串存在且唯一。示例1"1AB2345CD","12345EF""2345"备注: 1≤∣str1∣,∣str2∣≤5000 动态规划解决注意这题求的是最长公共子串,不是最长公共子序列,子序列可以是不连续的,但子串一定是连续的。定义dp[i][j]表示字符串str1中第i个字符和str2种第j个字符为最后一个元素所构成的最长公共子串。如果要求dp[i][j]
2021-07-05 09:22:24
196
2
原创 模拟时钟:时钟根据时间转动
/** * * 时钟根据时间转动 * 模拟时钟 * */@RemoteViewpublic class AnalogClock extends View { private Time mCalendar; private Drawable mHourHand; private Drawable mCenterHand; private Drawable mMinuteHand; private Drawable mDial; private Drawab.
2021-06-10 17:24:54
1286
原创 布局从左侧滑出,布局往左滑动隐藏
myAnimation_Translate = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, -1, Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0, Animatio.
2021-06-04 12:20:28
237
1
原创 Android 保存Logcat信息到手机存储
public class LogcatFileManager { private static LogcatFileManager INSTANCE = null; private static String PATH_LOGCAT; private LogDumper mLogDumper = null; private int mPId; private SimpleDateFormat simpleDateFormat1 = new SimpleDateFor.
2021-05-25 17:26:45
536
1
转载 android 获取assets下文件路径
fileName:你的文件名 public String getAssetsCacheFile(Context context, String fileName) { File cacheFile = new File(context.getCacheDir(), fileName); try { InputStream inputStream = context.getAssets().open(fileName); ...
2021-05-18 18:12:13
343
原创 Android项目导入自定义SDK
1、把sdk文件夹复制到项目的目录之下(mysdk)2、修改Gradle Script下的setting.gradle文件3、修改Gradle Script下的build.gradle(app)文件
2021-05-11 14:19:25
212
原创 定时器:每隔500ms执行一次
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button button; private TextView textView; int speed = 1; private Timer timer = new Timer(true); private Handler mHandler = new Handler() {..
2021-05-11 12:21:52
2327
转载 android jar包文件只编译不打包到apk中
需求:动态加载apk插件化开发时,插件工程中依赖的dl-libs.jar包,只想它参与编译,而不用打包到apk中build.gradle依赖dependencies {// compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.google.code.gson:gson:2.8.0' pro.
2021-05-06 09:19:13
1220
原创 Java、Android中Math的一些用法
Math.IEEEremainder 求余Math.max 求两数中最大Math.min 求两数中最小Math.sqrt 求开方Math.pow 求某数的任意次方, 抛出ArithmeticException处理溢出异常Math.sqrt(x):平方根Math.pow(x,y):x的y次方Math.exp 求e的任意次方Math.log10 以10为底的对数Math.log 自然对数Math.rint 求距离某数最近的整数(可能比某数大,也可能比它小)Math.round 同上,返
2021-04-22 14:14:55
216
转载 干货:Linux 最常用命令
作者:icoder.long 来源:https://reurl.cc/qmjd1qLinux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,如手机、路由器等,Android程序最底层就是运行在linux系统上的。一、Linux的目录结构/的下级目录 bin (binaries)存放二进制可执...
2021-04-19 08:45:47
105
原创 StringBuffer 和 StringBuilder区别
StringBuffer 和 StringBuilder 它们都是可变的字符串,不过它们之间的区别是 Java 初中级面试出现几率十分高的一道题。这么简单的一道题,栈长在最近的面试过程中,却经常遇到很多求职者说反,搞不清使用场景的情况。今天,栈长我带大家彻底搞懂 StringBuffer 和 StringBuilder 的几个区别和它们的应用场景,如果你是大牛,请略过,如果你是菜鸟,或者对这两个不是很清楚,可以学习一下,也可以为年底的面试加油冲刺。先看看 StringBuffer 和 StringB
2021-04-13 18:07:25
61
原创 夏令时开始的时刻Android系统会1个小时补正
1,修改文件bionic/libc/tzcode/localtime.c //US char* pst = "PST8:00:00"; char* mst = "MST7:00:00"; char* cst = "CST6:00:00"; char* est = "EST5:00:00"; //EU char* gmt = "GMT0:00:00"; char* cet = "CET-1:00:00"; // try the "pe.
2021-04-02 14:12:43
283
原创 Android系统架构
目录一、引言二、Android架构2.1 Linux内核层2.2 硬件抽象层 (HAL)2.3 Android Runtime & 系统库2.4 Framework层2.5 App层2.6 Syscall && JNI三、通信方式3.1 Binder3.2 Socket3.3 Handler四、核心提纲4.1 系统启动系列4.2 系统稳定性系列4.3 Android进程系列4.4 四大组件系列4.5 图形系统系列
2021-02-22 10:50:35
1116
3
原创 说一说为什么 Android 要采用 Binder 作为 IPC 机制?
在开始回答 前,先简单概括性地说说Linux现有的所有进程间IPC方式:管道:在创建时分配一个page大小的内存,缓存区大小比较有限; 消息队列:信息复制两次,额外的CPU消耗;不合适频繁或信息量大的通信; 共享内存:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;但进程间的同步问题操作系统无法实现,必须各进程利用同步工具解决; 套接字:作为更通用的接口,传输效率低,主要用于不通机器或跨网络的通信; 信号量:常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主
2021-01-21 15:08:59
179
原创 给第三方apk进行系统签名
有一个第三方apk(具有系统权限),无法安装在我们自己的Android机器上;。这是由于该APK具有系统权限,而系统签名与我们的Android设备系统签名不一致。Android检测到系统签名不一致,由于安全因素考虑,就阻止安装了。 解决方法:使用自己的Android签名工具给apk重新签名。(1)Android的签名文件存放于系统源码的 build/target/product/security/目录下(注:Linux或服务器上如下图)该目录下有 me...
2021-01-12 09:20:46
367
原创 关于部分UML图形介绍
关于部分UML图形介绍转至元数据结尾Created by吕平, last modified on九月 06, 2019转至元数据起始一、用例图: 1、什么是用例图:用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图,用例图(User Case) 是外部用户(被称为参与...
2020-12-31 10:50:08
1158
原创 Android Build 系统
目录一、概述二、编译 Android 系统1.执行编译2.常用的编译命令三、Build 结果的目录结构1.Build 生成的镜像文件四、Make 文件说明五、Make 目标说明1.make /make droid2.其他目标六、在 Build 系统中添加新的内容1.添加新的产品2.添加新的模块3.build.prop系统属性添加一、概述 Build 系统中最主要的处理逻辑都在 Make 文件中,而其他的脚本文件只是起到一些辅助作用...
2020-12-17 15:17:17
1462
原创 Android Context:Android中的Context是什么?能干什么?怎么用呢?
Activity mActivity =new Activity()作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言,Activity本质上也是一个对象,那上面的写法有什么问题呢?估计很多人说不清道不明。Android程序不像Java程序一样,随便创建一个类,写个main()方法就能运行,Android应用模型是基于组件的应用设计模式,组件的运行要有一个完整的Android工程环境,在这个环境下,Activity、Serv
2020-12-10 17:55:10
258
原创 Android EventBus
一、EventBus介绍 EventBus是一款针对Android优化的发布-订阅事件总线。它简化了应用程序内各组件间、组件与后台线程间的通信。其优点是开销小,代码更优雅,以及将发送者和接收者解耦。如果Activity和Activity进行交互还好说,但如果Fragment和Fragment进行交互则着实令人头疼。这时我们会使用广播来处理,但是使用广播略嫌麻烦并且效率也不高。如果传递的数据是实体类,需要序列化,那么传递的成本会有点高EventBus的三要素如下: Event:...
2020-12-07 10:10:22
317
原创 Android OkHttp
一、OkHttp的介绍Android系统提供两种HTTP通信类,HttpURLConnection和HttpClient。在Android 2.2版本及其之前的版本使用HttpClient是较好的选择;而在Android 2.3版本及其之后,HttpURLConnection 则是最佳的选择,它的 API 简单,体积较小,因而非常适用于Android项目。HttpURLConnection的压缩和缓存机制可以有效地减少网络访问的流量,在提升速度和省电方面也起到了较大的作用。另外在Androi
2020-11-30 17:09:16
384
原创 Ellisys工具的使用:查看btsnoop.log
·一般不是专业开发蓝牙的估计不会选择使用这个工具,但是即使我们不买这个设备,安装了Ellisys的工具也可以看btsnoop的·下面我就一步一步教你通过Ellisys来打开btsnoop.1)首先打开APP,这个没什么好说的,Ellisys不能直接把btsnoop拖进来打开2)选择File->Import,出现以下界面。3)选择HCI data.commands and events.点击next.会出现以下界面。4)然后选择BT snoop HCI,通过Browser来打
2020-11-25 17:09:35
3068
原创 Android性能优化
目录一.布局优化1.产生卡顿主要原因2.布局优化方法:二、内存泄漏1.什么是内存泄漏2.Java虚拟机内存的划分3.内存泄漏的场景三、内存溢出1.什么是内存溢出2.如何解决OOM四、ANR异常1.什么是ANR2.造成ANR的主要原因3.如何解决ANR一.布局优化1.产生卡顿主要原因(1)布局Layout 过于复杂,无法在16ms 内完成渲染。(2)同一时间动画执行的次数过多,导致 CPU或GPU负载过重。(3)View 过度绘制,导
2020-11-23 14:15:30
158
原创 蓝牙协议体系结构
一.蓝牙技术特点工作频段:2.4GHz的工科医(ISM)频段,无需申请许可证。大多数国家使用79个频点,载频为(2402+k)MHz(k=0,1, 2…78),载频间隔1MHz。采用TDD时分双工方式。 传输速率:1Mb/s(V2.0以上版本吗) 调试方式:BT=0.5的GFSK调制,调制指数为0.28-0.35。 采用跳频技术:跳频速率为1600跳/秒,在建链时(包括寻呼和查询)提高为3200跳/秒。蓝牙通过快跳频和短分组技术减少同频干扰,保证传输的可靠性。 语音调制方式:连续可变斜率增量调制
2020-11-20 13:33:57
1732
2
原创 Android 蓝牙架构概述
Android 提供支持经典蓝牙和蓝牙低功耗的默认蓝牙堆栈。借助蓝牙,Android 设备可以创建个人区域网络,以便通过附近的蓝牙设备发送和接收数据。在 Android 4.3 及更高版本中,Android 蓝牙堆栈可提供实现蓝牙低功耗 (BLE) 的功能。要充分利用 BLE API,请遵循Android 蓝牙 HCI 要求。具有合格芯片组的 Android 设备可以实现经典蓝牙或同时实现经典蓝牙和 BLE。BLE 不能向后兼容较旧版本的蓝牙芯片组。在 Android 8.0 中,原生蓝牙堆栈.
2020-11-20 10:43:01
1561
原创 adb命令使用大全
目录一、ADB架构二、基本用法1.为命令指定目标设备2.启动/停止3.查看 adb 版本4.以 root 权限运行 adb5.指定 adb server 的网络端口三、设备连接管理1.查询已连接设备/模拟器2.USB 连接3.无线连接(需要借助 USB 线)4.无线连接(无需借助 USB 线)四、应用管理1.查看应用列表2.所有应用3.系统应用4.第三方应用5.撤销和添加应用权限6.安装 APK7.adb install ...
2020-11-18 12:02:33
729
原创 Android 事件分发机制详解
前言Android事件分发机制是Android开发者必须了解的基础 网上有大量关于Android事件分发机制的文章,但存在一些问题:内容不全、思路不清晰、无源码分析、简单问题复杂化等等 今天,我将全面总结Android的事件分发机制,我能保证这是市面上的最全面、最清晰、最易懂的本文秉着“结论先行、详细分析在后”的原则,即先让大家感性认识,再通过理性分析从而理解问题; 所以,请各位读者先记住结论,再往下继续看分析;文章较长,阅读需要较长时间,建议收藏等充足时间再进行阅读目录示意图
2020-11-02 15:14:07
305
原创 Android 多线程:HandlerThread使用
多线程的应用在Android开发中是非常常见的,常用方法主要有:继承Thread类 实现Runnable接口 Handler AsyncTask HandlerThread1. 简介示意图更加具体请看文章:Android多线程:这是一份全面 & 详细的HandlerThread学习指南2. 使用步骤HandlerThread的本质:继承Thread类 & 封装Handler类 HandlerThread的使用步骤分为5步// 步骤1:创建Hand.
2020-07-31 09:37:22
279
9
原创 Android ListView右侧的字母索引View
public class SideBar extends View { public static String[] INDEX_STRING = { "","#", "","","A", "B", "C", "D", "E", "F", "G", "","H", "I", "J", "K", "L", "M", "N", "","O", "P", "Q", "","R", "S", "T",.
2020-07-14 09:29:42
227
原创 Android 拼音帮助类
/** * 将字符串中的中文转化为拼音,其他字符不变 花花大神->huahuadashen * * @param inputString * @return */ public static String getPinyin(String inputString) { ArrayList<HanziToPinyin.Token> tokens = HanziToPinyin.getInstanc...
2020-07-14 09:25:34
146
原创 Android 删除文件夹以及文件夹中的文件
这个是你要删除文件所处的路径位置:public static final String FOTA_FILE_DIR_PATH = "file_path"; //file_path:路径从你的路径下获取你所要删除的文件:private String appendFilePath(String dirPath,String fileName){ StringBuilder sbFile = new StringBuilder(dirPath); if (!dirPath..
2020-06-12 17:06:20
1304
原创 TCP/IP 协议
一、 计算机网络体系结构分层计算机网络体系结构分层计算机网络体系结构分层不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。二、 TCP/IP 基础1. TCP/IP 的具体含义从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必...
2020-06-11 14:51:08
201
u-centersetup_v20.06.01.zip
2020-11-25
Ellisys Bluetooth Explorer 400 - Analyzer User Manual
2020-11-25
UML画图软件.zip
2019-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人