- 博客(36)
- 资源 (4)
- 收藏
- 关注
原创 鸿蒙拉起wifi设置页
方法1Intent intentJumpSetting = new Intent();intentJumpSetting.setAction("android.settings.WIFI_SETTINGS");intentJumpSetting.addFlags(Intent.FLAG_NOT_OHOS_COMPONENT);startAbility(intentJumpSetting);方法2Intent intent = new Intent();Operation operation
2021-12-29 19:04:29
1587
原创 FileObserver的使用、实现原理与优化
最近在开发过程中出现了下面的场景:主程序控制着数据文件的更新逻辑,但是文件的更新动作并没有及时通知插件数据文件更新了。在插件中为了兼顾性能,往往会对数据文件在内存中进行缓从而导致数据文件无法实时刷新的情况。为了解决这种情况需要找到一种高效、实时的数据文件刷新解决方案。FileObserver介绍inotify机制是从linux kernel 2.6.13开始引入,Android 1.5对应的linux内核已经是2.6.26了。因此完全可以在Android上利用inotify达到反调试的目的。而且An.
2021-10-09 18:15:35
2205
原创 安卓壁纸服务(动态壁纸)使用与源码分析
概览安卓的动态壁纸可以归属到SystemUI中,是SystemUI管理的一部分,安卓支持静态壁纸,同时也支持动态壁纸(added in API level 7 )用户可以从设备的内部或者是外部存储中选择一个图片资源来作为静态壁纸,此外也可以设置壁纸跟随时间的变化进行一些变化(例如切换不同的图片资源),这也是安卓的特色功能之一。需要说明的是当某个应用通过系统的接口设置为壁纸应用后,会启动一个壁纸服务,该服务的优先级很高,从某种程度上来说是不会被系统主动杀死的(但是可以被手动停止)。使用方法安卓的动态
2021-08-16 15:38:57
1280
原创 Compose中遇到的一个问题
在使用compose的by remember {}给一个变量赋值是,IDE报错:Type 'TypeVariable(T)' has no method 'getValue(Nothing?, KProperty<*>)' and thus it cannot serve as a delegate解决办法:导入 import androidx.compose.runtime.getValue
2021-03-30 19:05:44
908
原创 安卓子model中添加aar依赖
在子model中添加aar依赖时,不能再像主model中添加依赖那样,编译的时候会找不到这个aar的路径。repositories { flatDir { dirs 'libs' } }可以参考如下写法:repositories { flatDir { dirs project(':modelname').file('libs'), 'libs' } }...
2020-09-15 18:48:04
473
原创 安卓10外部存储的访问
今天试图读取保存在Download文件夹下的一张图片,但是BitmapFactory.decodeFile(path)返回了null,logcat给出了E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Download/1.bmp: open failed: EACCES (Permission denied)的错误。EACCES是一个内核错误,个人理解是Error Acc
2020-07-19 21:10:29
2088
2
原创 dpi、dp、sp、px、mm之间的关系
dpi、dp、sp、px、mm之间的关系参考链接:Android 开发者->文档->指南->支持不同的像素密度前言Android 设备(手机、平板电脑、电视等)不仅有不同的屏幕尺寸,而且其屏幕也有不同的像素尺寸。也就是说,有可能一部设备的屏幕为每平方英寸 160 像素,而另一部设备的屏幕在相同的空间内可以容纳 480 像素。如果您不考虑像素密度的这些差异,系统可能会缩放图片(导致图片变模糊),或者图片可能会以完全错误的尺寸显示。dpidpi是表示屏幕像素密度的单位,英文缩写
2020-06-26 21:46:12
4263
原创 IntDef 和 StringDef 的使用
IntDef 和 StringDef 的使用在 androidx.annotation 中提供了 IntDef 和 StringDef 两个元注解供使用。在如下的应用场景中可以进行使用:需要传入的参数是几个固定值(整形、字符串)中的某一个时,可以使用这两个注解来帮助你在编译时判断参数是否传错。如果不使用注解,常见的做法是使用枚举类。例如有一个设置星期的函数private void setC...
2020-05-06 11:35:46
2560
3
原创 安卓使用回调的方法进行线程间通讯
0.背景 网上关于安卓线程间通讯的文章多如牛毛,以子线程和UI线程为例,我所看到的所有文章都是使用Handler进行通讯,这种方法是非常好的,但是不能应对所有的情况。 问题是这样的,如果我写了一个MainActivity.java,但是我的子线程没有写在这个文件里,而是单独写到了SendThread.java中。那么,在这种情况下二者没有办法共用同一个mHand...
2019-11-08 23:09:12
278
原创 1024纪念
祝广大程序员节日快乐!作为一个即将毕业的学生,今天拒绝了一家offer,接受了另一家offer。人生的轨迹又一次发生了变化,希望以后的日子一起都好。...
2019-10-24 11:45:14
165
原创 esp8266_deauther的实现过程及一些思考5——IEEE802.11协议网络可用性的漏洞
这一系列的文章仅作技术研究,请遵守相关法律(中华人民共和国网络安全法),请勿使用相关技术来攻击他人!基于IEEE802.11的无线接入网络的便利性导致了私人消费者,工业和军事领域的广泛部署。但是,这种使用是基于隐含的机密性和可用性假设。虽然802.11的基本机密机制中的安全漏洞已被广泛宣传,但对网络可用性的威胁却远未得到广泛认可。实际上,802.11非常容易受到针对其管理和媒体访问协议的恶...
2019-10-09 17:27:25
1615
1
原创 esp8266_deauther的实现过程及一些思考4——源码分析
这一系列的文章仅作技术研究,请遵守相关法律(中华人民共和国网络安全法),请勿使用相关技术来攻击他人!1 软件配置方法1.1wifi相关配置这一部分的配置在wifi.h文件中,这里规定了web文件的位置,已经wifi的配置。比如登陆的ip地址,默认是192.168.4.1,默认的子网掩码是255.255.255.0。// Server and other global obj...
2019-10-09 17:27:11
2444
1
原创 esp8266_deauther的实现过程及一些思考3——源码的烧写和测试(附带固件)
这一系列的文章仅作技术研究,请遵守相关法律(中华人民共和国网络安全法),请勿使用相关技术来攻击他人!在网上购买了一块esp8266的开发版,这个开发版价格很便宜30块不到,且尺寸很小,集成度比较高,非常便携。1 源码的烧写1.1通过Arduino IDE烧写(1)安装驱动:USB转串口芯片是CP2102,一开始计算机没有能正常识别这个设备是因为电脑上没有安装CP2102...
2019-10-09 17:26:55
2908
原创 esp8266_deauther的实现过程及一些思考2——源码编译
这一系列的文章仅作技术研究,请遵守相关法律(中华人民共和国网络安全法),请勿使用相关技术来攻击他人!跟着第一篇文章继续记录,发现了一种很方便的编译方法,不需要手动下载并添加那几个库文件(esp8266-oled-ssd1306、Adafruit_NeoPixel、SimpleButton) 。只需要在文件->首选项->附加开发版管理网址中输入两行网址:http://ardu...
2019-10-09 17:26:17
1678
原创 esp8266_deauther的实现过程及一些思考1——准备源码、环境配置
这是和我最近尝试开发的一款安卓应用(WiFiDetector)配套使用的工具,主要应用对象是酒店的联网的针孔摄像头,使用WiFiDetector来发现这一类摄像头,并试图使用deauther来攻击他们。这一系列的文章仅作技术研究,请遵守相关法律(中华人民共和国网络安全法),请勿使用相关技术来攻击他人!esp8266_deauther使用的是乐鑫出品的ESP8266芯片,他有以下的主要...
2019-10-09 17:25:33
4547
2
原创 Git指令集合
git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" # 配置用户名git config --global user.email "xxx@xxx.com" # 配置邮件git config user.name "xxx" # 配置当前目录用户名git config user.email "xxx@xxx.c...
2019-10-06 23:13:09
113
原创 一行代码修改安卓状态栏颜色
现状不同的安卓版本以及不同的系统对状态栏的设置方法各不相同。解决方案由于不同的手机系统设置各不相同,这里推荐使用github上的一个成熟的解决方案status-bar-compat。StatusBarCompat是一个用于设置系统状态栏颜色的兼容库,兼容Android 4.4.2(API 19)以上,使用简单,仅需要一行代码的调用。使用方法1. 声明仓库确保在你的根项目...
2019-09-26 00:05:33
1203
原创 Java接口多继承的问题
1 单继承、多实现Java有一个很重要的特性即单继承,多实现。假设我们有一个子类继承了两个父类,但是两个父类有同名、同返回值、同参数的方法method(),那么当子类调用这个方法的时候,JVM并不知道该执行哪一个方法,所以在绝大多数情况下,Java中是不可以实现多继承的。为了实现类似多继承的功能,Java提供了接口Interface这个神器,我们可以通过实现多个接口来实现相关功能。2 多继...
2019-09-09 12:52:27
1541
原创 Java1.8中HashMap的三个细节
0 写在前面的在写这篇文章之前先把Java中HashMap的作者列出来,向他们致敬!/** @author Doug Lea* @author Josh Bloch* @author Arthur van Hoff* @author Neal Gafter* @see Object#hashCode()* @see Collection* @see ...
2019-09-06 18:54:09
622
3
原创 Java中StringBuffer类的常用方法
StringBuffer类提供了很多友好的方法,适合应用于有大量字符串拼接、删除的场景,尤其是多线程下的字符串的拼接、删除与读写。与之相似的一个类是StringBuilder,这个类提供了StringBuffer所有的功能,但是是线程不安全的,在单线程的场景中,它的性能要优于StringBuffer。public class MyStringBuffer { public static ...
2019-08-27 11:12:16
463
原创 Java中String类的常用方法
import java.util.Arrays;public class MyString { public static void main(String[] args) { String str ="abcd abcd abcd"; //indexOf():输出指定字符(串)第一次出现的索引,如果没有输出-1 System.out.println(str.indexOf('...
2019-08-26 23:37:56
152
原创 关于Java关键字instanceof的理解
在看equals方法的时候注意到了平时没有加以注意的instanceof关键字。官方文档下面是Oracle官方关于这个关键字的说明的链接:https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.instanceof大概是这样的:1、obj如果为null,则返回false;否则设S为obj的类...
2019-08-25 01:16:38
196
原创 Java中的hashcode()函数的源码实现与分析
这里记录一下几个常见类的Hashcode的计算方法,膜拜一下大神的编程风格与思路。String类:17和31是非常经典的素数,17和31散列码的想法来自经典的Java书籍——《Effective Java》第九条。String类的hashcode源码如下: public int hashCode() { int h = hash; //按照...
2019-08-25 00:55:38
1139
原创 java判断一个整数是不是完全平方数
今天被问了这个问题,做了一些思考,下面对这些思路进行整理,我一共整理出4种实现方法。1 遍历平方法这种方法的思路是把比给出的目标数num小的整数都做一次平方运算,如果num等于某一个平方就返回true。这里做了一些优化,及不需要把小于num的数全部计算一次,只需要计算小于等于n的就可以。public static boolean lowIsSquare(int num) { if ...
2019-08-20 18:24:39
14537
2
原创 java使用莱布尼茨公式迭代高精度的圆周率
接着上一篇的门特卡罗方法。又去看了一下几个圆周率的算法,挑了莱布尼茨迭代公式:pi/4=1-1/3+1/5-1/7+1/9……求出来的结果是(100位小数):3.1415926540554545259872230756648344179116320363727376140128713099853213974820294342616300093091457012比起之前的门特卡罗方法...
2019-07-06 18:31:13
1604
原创 java暴力计算近似的圆周率(门特卡罗法)
昨天坐在火车上很无聊,就在想怎么计算圆周率,现在计算机的算力这么强,如果用很暴力的方法是不是可以求出很高精度的圆周率呢?带着这个问题,我去做了一下尝试。思路是这样的:在一个半径为1的圆的外接正方形区域里面模拟点,如果这个点在圆的范围内,那么记一次数(ispi),用这个数除以总次数就可以得到pi/4。代码如下:package HowBigIsPi;import java.mat...
2019-07-06 17:04:25
688
原创 WordPress让投稿者获得使用媒体库的权限
首先要说明的是折是一个不安全的操作,因为开放媒体库后可能会遭到投稿者的恶意攻击。但是很多时候我们可能想要让投稿者可以使用这样的功能,用以丰富文章的内容。在模板函数(functions.php)最后添加下面的代码,最后重启服务即可。if ( current_user_can('contributor') && !current_user_can('upload...
2019-06-28 19:57:02
1396
原创 WordPress注册邮箱验证链接无法正常访问
造成链接无效的原因是wp-login.php和wp-includes/pluggable.php文件中的相关代码添加了一对尖括号,qq邮箱等软件默认把后括号也解析为URL地址,造成无法访问新用户引导的URL。wp-login.php(line396)修改为$message .= network_site_url( "wp-login.php?action=rp&key=$key&...
2019-06-28 19:37:16
2200
原创 关于Keil5加载Keil4的工程时产生的版本兼容性问题
一个老的项目是用Keil4开发编译的,但是在用Keil5打开时,并不能正常的编译,甚至在设备里面没有办法正常显示对应的设备(如STM32F2xx)针对这个问题,在Keil官网给出了解决办法。http://www2.keil.com/mdk5/legacy/MDK v4 Legacy Support:MDK Version 5 uses Software Packs to support...
2019-06-12 11:39:25
3933
原创 Android设置自己的应用为launcher
效果是让自己的应用在安卓设备启动后自动启动且显示为桌面(替换系统默认的launcher)操作十分简单,在mainactivity的intent-fliter标签里添加下面的代码<category android:name="android.intent.category.LAUNCHER" /><category android:name="android.inten...
2019-06-11 20:52:50
7471
原创 中显串口屏幕串口通讯
使用的型号是SDWe070C06N,一开始以为这个屏幕默认是485通讯,后来测试了一下A5 5A 03 81 00 01(读取设备号)没有响应,解决办法如下:这一款屏幕默认使用TTL通讯,将背面的J17短接后使用RS232通讯。...
2019-06-10 11:39:53
2252
2
原创 BigInteger类的使用方法
先看一下JAVA API中对BigInteger的解释:public class BigIntegerextends Numberimplements Comparable<BigInteger>Immutable arbitrary-precision integers. All operations behave as if BigIntegers were repr...
2019-06-06 15:49:16
1646
原创 使用Handler实现在子线程中刷新UI(以显示时间为例)
没什么好说的,直接上代码吧public class MainActivity extends Activity { TextView textView1; private final int UPDATE_TEXT = 1; private String year; private String month; private String day; priva...
2019-06-06 12:01:04
651
原创 如何在Android上启动MySQL服务
由于一些需求,需要在安卓系统上启动一个MySQL服务,让安卓工控机成为一个MySQL服务器,在网上参考了很多资料,但是都不是很详细,且会出现各种各样的问题。通过一些尝试,最终成功打开了MySQL的服务,并通过ODBC和MySQL-Front对安卓端的数据库进行了连接。下面我会对这一次的操作进行一个详细的总结。需要的源文件和工具都可以通过这个链接下载https://download.cs...
2019-06-03 14:40:40
4211
7
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人