自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android菜鸟的专栏

我是一个Android菜鸟,好希望有人能写一些菜鸟能轻松看得懂的教程给我学习学习!我渴望学习!

  • 博客(315)
  • 收藏
  • 关注

原创 程序员装机必备软件

这里记录我安装好系统之后必须要安装的一些软件官方地址。JavaSE JDK8:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.htmlAndroid Studio:https://developer.android.google.cn/studioIntelliJ IDEA:https://www.jetbrains.com/idea/Everything:https://www.voidtools.

2021-04-22 11:07:13 890

原创 广州图书馆

写篇博客记录一下广州图书馆吧!今年的某一天第一次去广州图书馆,里面是真的宽广、干净又安静,图书很多,我想要的书几乎都有,可以说,你平时在广州购书中心想要买的书,在图书馆绝大多数都有,所以,为什么要花钱去买呢!而且图书馆里的书很多都是很新的,我以前天真的以为图书馆的书都是很旧的,我错了!广州图书馆里面环境真的很好,坐位超级多的,生怕你没地方做似的,可能是疫情期间,进馆需要预约,所以我看到坐位那么多,还没几个人做,不知道没疫情时没人数限制那时是不是坐位暴满的场面,就恨自己以前为什么不早点去图书馆逛逛,这样就

2021-02-03 15:47:16 925 4

原创 想学习的内容零散笔记

突然间发现,可以学的东西好多,自己好多东西不会,好落后了,Android已经出了好多好用又新的东西自己都没花时间去学,不是学不会,只是没去学。谷歌还是很做实事的,Android更新非常快,包括android系统和相应的api,文档也是越来越丰富(相比早期的简单文档),可以看出谷歌是一家做实事的公司,是一家好公司,做Android,不会错的,关键看自己的学习能力了。在这个互联网时代,手机、电脑很容易分人的心,经常不记得自己要干什么了,所以这里记录一下自己想学的东西,迷茫的时候就来翻翻这个日志,找点喜欢的东

2020-09-10 17:00:12 617

原创 一看就懂的i++和++i详解

我相信很多朋友可能之前已经百度过i++和++i的相关文章了,也做过不少的练习,觉得自己已经深刻掌握了它们之间的原理了,真的是这样的吗?来试试计算一下我下面提供的几道练习,你就会发现你又不会了!

2020-05-09 22:10:35 53130 155

原创 Gradle软件下载的镜像

​腾讯云镜像:https://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-bin.zip。​华为云镜像:https://repo.huaweicloud.com/gradle/gradle-8.11.1-bin.zip。​阿里云镜像:https://mirrors.aliyun.com/gradle/gradle-8.11.1-bin.zip。今天(2025/3/28)试了阿里云镜像无法访问,另外两个正常。使用国内镜像源(推荐)​。

2025-03-28 23:44:35 178

原创 阿里云云效 Maven

官方插件(如 org.jetbrains.kotlin.android)社区插件(如 com.github.spotbugs、io.spring.dependency-management)gradle的官方插件通常不会托管到或google()。包含几乎所有 ​非 google() 系的 Java 库(当然也包含kotlin)。仅包含 ​Google 官方发布的库。

2025-03-28 03:13:02 715

原创 如何判断自己是否是系统应用

如果我们要把自己的应用做成系统应用,一般会使用系统签名,并在清单文件中添加。

2025-03-13 20:24:32 152

原创 使用Apifox动态生成请求参数

假如“自定义脚本” 在上面,如果我们在自定义脚本中想读取替换后的变量,则会读取不到,因为自定义脚本运行时,变量替换的脚本还没有运行。比如,我要调试一个登录请求,使用Apifox来进行调试,登录请求需要一个密码,这个密码需要进行AES加密后才能发送出去,我希望在Apifox中我填入明文密码,然后Apifox帮我进行AES加密后再发送出去。如上图,可以看到响应体中的密码就是加密后的密码了,后面再调试时,我们密码随便换,只需要填入明文密码,工具会自动帮我们加密。参数移除,然后添加经过加密后的参数。

2025-02-27 18:30:20 1046

原创 kotlin项目无法访问Java类的问题

类,这个java类也必须是放在。中的才可以访问到,如果放在。

2025-01-09 16:08:35 422

原创 查询网络类型以及请求特定网络和绑定到特定网络以及监听网络变化

绑定指定的网络,确实是可以的,比如我想绑定我的App就用移动网络,即使连了wifi也走移动的网络,不走wifi,经实验确实是OK的,wifi明明连接了,但是还是可以走移动的网络进行通信。这里我们只监听wifi网络的变化,如果蜂窝网络发生变化我们就不知道,如果我只想知道当前默认网络的变化,默认网络即当前正在使用的网络,比如你当前有蜂窝网络,同时也连着WIFI,如果你的应用正在使用WIFI网络来进行网络传输,则WIFI网络为默认网络,不论当前默认是什么网络,想要监听它的变化可以使用。中只包含了wifi网络。

2024-12-26 11:12:36 1118

原创 设置首选网络类型以及调用Android框架层的隐藏API

而有的手机甚至连关闭5G的功能开关都没有,也没有首选网络类型的设置界面,这很不方便,比如有时候测试,我就希望使用4G网络,但是手机上没有设置可以去进行修改,怎么办?这个首选网络类型的设置,一般都会有一个类型最全的,即包含移动/联通/电信,且包含5G/4G/3G/2G的选项,且这个选项一般排在最前面,这样的选项用英文描述为“Global”,有全面的/全球的意思,意思就是你用这个选项,你插什么卡都能用,比如联通/电信/移动,而且不管你是4G、3G还是2G都能用。在新一点的版本手机中,还会有5G的选项。

2024-12-25 08:58:44 1408

原创 Android串口开发中的计算校验码

串口开发中,数据是7个字节的,计算校验码就是把中间的5个字节相加(不要头和尾),得到的校验码用作7个字节中的最后一个字节,所以5个字节相加的和最多只能是1个字节的大小,但是相加的结果很可能大于1个字节,所以如果使用int类型来保存相加结果的话,就需要转换为int,但是不能直接转,直接强制转换类型可能结果会不对,首先需要把结果。,这样就只保留了int中的最后一个字节了,且不存在负数问题了,这样再转换为。更好的做法是在保存结果的时候直接使用。来保存,这样就不需要。

2024-12-18 17:59:23 201

原创 Android获取sim卡频段信息

公司一些Android设备,在交给客户使用时,需要使用sim卡网络,但是有时候网络不好,要给客户证据说明是网络问题,一个办法是网络测速,还有就是获取一下频段信息,根据这个信息可以和中国移动沟通问题来源,比如在某些地方,移动只部署了一两个频段,而有的频段速度快,有的频段速度慢,所以可以通过频段信息判断网络问题。

2024-12-18 10:00:56 717

原创 java中整型的大端和小端

验证一个 int 变量在栈内存中是大端还是小端存储,需要通过一些间接方式,因为 Java 不允许直接操作内存地址。比如在Java中声明了一个 int变量,这个变量在栈内存中分配内存地址,那当int值保存到栈内存中时是用大端还是小端?在读写多字节值以及为此字节缓冲区创建视图时使用该字节顺序。这个不用猜,直接看JDK文档即可,比如,使用。我们可以通过 JNI 编写一个本地方法来直接读取栈内存中保存的 int 变量的字节序。在 Java 中,int 类型变量在栈内存中的存储方式(大端或小端)是由。

2024-12-06 11:07:31 639

原创 String IP和Int IP的互相转换

android中,wifiManager.connectionInfo.ipAddress 可以获取到wifi的ip地址,但这是一个int值,如何转换为常见的如192.168.1.129这种形式,以及这种形式如何转换回int值的形式。这里ip分为4段,每一段的值都是0 ~ 255,这正好是1个无符号字节就能表示的,所以ip的值用4个字节就可以保存,4个字节刚好又和int的大小相同。转换为字符串格式: 使用 InetAddress 是更可靠的方式,但手动方式也适用于这种简单情况。方法 2: 手动转换。

2024-12-05 15:28:02 687

原创 Kotlin中泛型的协变

如上代码,List是一个协变类型,所以泛型Shape可以接收Circle,这是没问题的,因为List是只读的,那么List中的元素就只可能是Circle类型,不会发生改变。如上代码,第一行赋值语句是OK的,第二行赋值语句在编辑器上直接就报错了。如上代码,在编辑器中是直接报错的,因为MutableList不是只读的,它可以增、删除 、改,比如。如上代码,如果非协变类型可以子类给父类,这将导致异常,所以在编辑器中这种赋值时会直接报错。只读集合类型是协变的,相反,可变集合不是协变的。协变不协变有什么用?

2024-11-15 16:35:27 466

原创 HandlerThread的使用

在处理事件时是在主线程上运行的,为了预防阻塞主线程,我们就需要另外再开启子线程来处理。方法是运行在子线程中的,当我们在登录时,立马就点击注销,此时注销代码不会马上被执行,因为登录操作需要5秒钟时间,它阻塞了线程,当登录操作结束后,注销的代码就可以马上得到执行了。方法的区别在于后者会等待处理完所有先前在任务队列中的任务再结束循环,比如,我们连续点击两次登录按钮,然后立马点击结束线程按钮,如果是。函数之后,再往消息队列中新添加的消息将不会被执行,比如按了结束线程按钮后,再按登录按钮,则登录操作不会被运行。

2024-11-06 14:43:51 627

原创 Looper.loop()的阻塞机制

这些系统调用允许线程在文件描述符(通常是消息队列的读端)上等待事件的发生,从而在有新消息时将线程唤醒。当没有任务时,线程会挂起等待新任务,一旦新任务到来,线程会被唤醒继续处理。没有消息可处理时,它会让线程进入等待状态,避免无意义的资源消耗。当没有新消息时,这个方法会阻塞当前线程,使线程进入等待状态;当有新消息到来时,它会被唤醒。中,当消息队列为空时,线程会被挂起,进入等待状态;当有新消息加入时,线程会被唤醒,继续处理消息。当有新消息时,通过底层的。是一个无限循环,当没有新消息时,它是如何挂起的?

2024-11-06 10:30:51 633

原创 处理器用handler表示还是用processor表示比较好?

在计算机硬件中,比如 CPU、GPU 或其他专门的处理单元,通常用 “processor” 表示。在开发中,编写代码时经常会用到处理器,如果是自己创建处理器,那这个类名中的处理器单词用哪个?:当强调一个“处理器”在数据流或系统架构中的角色,且它负责较大任务或持续的数据处理流程时。:当它是用于事件响应或执行单一、细粒度的操作时。特别是瞬时的、具体的事件或消息处理。:如果是在数据处理流水线或流式处理场景中,例如处理一系列数据或事件的步骤,使用。通常用于较小、具体的处理逻辑,而不是完整的任务。

2024-11-06 09:50:09 371

原创 获取带字母的iccid

可以看到,在没卡的情况下,它的列表依旧会返回一个数据,获取的ID为E,可能是表示Error吧,所以,当获取到iccid后,要判断它的长度是否大于等20位,如果不是则是无效的。,好像也只有这个作用了。另外,在Github上找相关实现的时候了解到一个情况,国外的sim卡的。,在我的小米11 pro (Android 14版本)中,双卡分别返回id为1和2。可以看到,在实体卡片上,它把最后一位数字用字母给隐藏起来,实际上它是一个数字。(sim卡序列号),不论这个卡是否带字母都可以获取到,非常的简单,只需要。

2024-10-30 10:54:45 1068

原创 Kotlin中$符号的转义

等,但是在原始字符串中(即三引号括起来的)没有转义字符的说法,所以在原始字符串中没办法表示一个制表符,也没办法表示一个回车换行,但是它支持你直接按回车来输入回车换行,在原始字符串中反斜杠也会当成普通字符处理,所以用来写正则表达式就比较方便,因为正则中用到反斜杠的地方就不需要做转义处理了。符号后面字符串对应的变量,所以编译就会报错。符号没有得到转义,那么它此时就用于字符串插值,但是我们又没有变量。后面的字符符合变量命规则,所以会被识别为变量,所以此时的。如上代码,在编译器中会直接报错,因为。

2024-09-18 16:10:42 469

原创 安装WMware和Ubuntu并使用xShell连接

到目前为止都是一路按回车,在上图中,显示了Ubuntu系统的ip为192.168.124.16,和Windows电脑是同网段的,所以可以在Widnows中ping通这个ip,也可以Ubuntu中ping通Windows电脑的ip。如上图,此时才是真正的开始安装Ubuntu系统,之前的那些都是进行一些配置设置。如上图,这个界面中的任何软件都不需要安装,光标定位到Done按回车。如上图,这一步需要按箭头下把光标定位到 “Done”,然后按回车。如上图,输入许可证密钥,自己网上找,输入后点击“输入”按钮。

2024-08-27 23:09:20 1446

原创 判断是否连接了wifi(坑、坑、坑)

如上方法,当wifi是连接的情况下,它就像是个粘性广播,一调用register函数就会立马收到回调,但是如果wifi是未连接的情况下,调用register函数时不会收到回调,所以这点不是很好,感觉像是Android官方Bug,你推荐我们用这种方式,但是当wifi未连接时,调用register函数确实收不到回调通知。所以,如果要监听wifi连接、断开的事件,可以使用这个注册回调的方式,如果要主动获取,则还是使用前一种方式,或者使用判断是否有ip的方式。是 sim卡的,并不是 wifi的。

2024-07-19 19:06:34 7950

原创 Android音频焦点

在某些情况下,多个音频流可以同时播放,但只有一个是用户真正会听的(专注于),而另一个在后台播放。一个例子是,在播放音乐时,会播报行车路线,而音乐的音量会降低(又称为闪避)。函数的作用:当一个应用程序请求音频焦点时,系统会通知其他正在播放音频的应用程序让出音频焦点。根据请求的类型和当前的音频焦点状态,其他应用程序可能会降低音量、暂停播放或完全停止播放音频。注:上面音频焦点API使用的是新出的API,在API 26才出的,也有过时的API可用,但是不推荐。,此时播放器应该暂停,通话结束后,调用。

2024-05-29 17:02:28 709 1

原创 Android11热点启动和关闭

Android官方关于在的类中有一套系统 API 可以控制热点的开和关,代码如下:对于和stopSoftAp这些API都被@SystemApi注解所标注,所以我们无法直接调用,只能通过反射来调用,而且这些API需要一个权限,这个权限需要系统签名的应用才可以使用,权限如下:builder忘记哪个API是30才出的了,所以做了一个版本上的判断,Android R为Android 11版本。对于启动热点,可用中的,或者中,其中,的只负责启动或关闭热点,对于热点名称密码等的一些配置要用的函数。

2024-05-23 09:04:54 2400

原创 Android内存不足的监测

是 Android 中的一个接口,用于接收内存相关的回调。它主要用于检测应用的内存使用情况,并在系统内存不足时释放不必要的资源。实现这个接口可以帮助应用在内存紧张时更好地管理资源。接口,应用可以在不同的内存紧张级别下做出响应,释放不必要的资源,从而改善应用的性能和用户体验。以下是一个 Kotlin 示例代码,展示如何在。

2024-05-14 17:39:32 706

原创 一个长期后台运行的服务

这个权限在Android 9.0的时候才出的,所以,如果目标版本低于9.0版本的话,可以不用声明前台服务权限,而且前台服务在很早的版本就已经有了,但那时不需要权限的。

2024-05-14 17:09:09 360

原创 图像/视频恢复和增强CodeFormer

尝试增强旧照片/修复人工智能艺术。

2024-05-13 08:48:55 428 1

原创 Android App开机启动

【代码】Android App开机启动。

2024-05-11 15:55:57 1114

原创 宽动态设置

一般来说,如果拍摄场景中存在较大的亮度差异,比如同时有强光和阴影部分,那么较高的宽动态范围设置会更合适,因为它可以帮助摄像头在不同亮度条件下保留更多细节。但是,如果拍摄场景中的亮度差异不是很大,也可以选择较低的宽动态范围。摄像头的宽动态范围(Wide Dynamic Range,简称WDR)通常表示它能够同时捕捉到高光和阴影细节的能力。可以进行一些测试,调整不同的宽动态范围设置,并观察拍摄效果,以确定最适合当前场景的设置。公司的一款摄像头的宽动态范围为1-100,设置多少合适?

2024-05-08 09:19:53 699

原创 音频播放&录音&回声消除

如果录到的声音即听不清自己话说也听不清播放的声音,则你再把这个声音做回声消除,肯定也消不好,因为原始音频就已经很差了,回声消除肯定也无法把音频变清晰的!音乐类型的声音大小范围为0 ~ 15,而通话类型为1 ~ 7,所以音乐类型的声音大小在调整时可以比较细腻,过渡比较平滑,比如从小最按到最大需要按15次音量加,而通话类型的话,从最小按到最大只需要按6次,所以它的过渡是没这么平滑的,所以相当的音量值,它们代表的声音大小是不一样的,这也是为什么通话类型的音量大小1比音乐类型大小1的声音要大声的原因。

2024-04-26 16:47:51 1695

原创 Cannot access ‘androidx.activity.FullyDrawnReporterOwner‘

本来原来一直都好好的,不知道哪天起新建的就报错了,经过排查,发现把。

2024-04-15 10:53:06 825

原创 信号值解读

是一种表示功率的单位,用于测量无线传输网络中信号的强度,它表示以毫瓦为基准的功率值的对数比。请注意,这些值是一般性的指导,实际的信号强度受到许多因素的影响,包括但不限于距离基站的远近、障碍物的阻挡、信号干扰等。-60 dBm 表示非常强的信号,-120 dBm 表示非常弱的信号。但是需要注意的是,这些值的具体范围和意义可能会因为不同的通信技术、设备和环境而有所不同,因此在实际应用中,需要根据具体的情况进行解释和判断。-50 dBm 表示非常强的信号,-100 dBm 表示非常弱的信号。的值越大,信号越好。

2024-04-12 16:16:09 3832

原创 手机重启手app没了

是一个在 Android 设备上执行的命令,它用于将文件系统中的缓冲数据写入到磁盘中。在 Android 中,文件系统通常使用缓冲机制来提高性能,但是这也意味着数据不会立即写入到磁盘上,而是在系统认为合适的时候进行写入。发现公司有些Android球机设备,安装了一些app,重启后app没了,还有公司的一些Android手机,原来是没问题的,不知道哪天起,只要重启,新安装的软件就会没了,很神奇。后来发现,在安装app后可以执行。命令可以强制将所有缓冲数据立即写入磁盘,以确保数据的持久性和一致性。

2024-04-12 09:38:14 1241

原创 GPS坐标转换为百度地图坐标并显示到百度地图上

坐标转百度地图的坐标,它还有其它的坐标系转换,比如腾讯地图坐标转百度地图坐标,百度地图坐标转腾讯地图坐标等。输入的格式为,先输入经度,然后是英文的逗号,然后是纬度。如上图,有示例请示url,需要注意的是,对于。参数,我们要填2,表示。

2024-04-03 16:11:33 2959

原创 IntelliJ中的非JVM技术

IntelliJ的官方帮助文档上有很多好东西可以去学习。

2024-03-26 16:41:08 289

原创 应用图标不更新

在公司采购的一台手机上发现应用图标修改之后有问题。如上图,除了桌面上的图标,其它地方看到的图标都是显示的第一次安装时的图标,我尝试卸载了重装,问题依旧,重启手机再装,问题依旧,然后我把手机恢复出厂设置再装,问题解决!所以是手机的Bug,坑爹!如上图,这个是桌面图标,已经是更新了的,没问题。

2024-03-20 15:11:15 362

原创 Android弹出通知

来电话时,它默认是使用这个对应的频道来发送通知的,然后判断如果这个频道被用户关闭了的话再用来电通知的那个频道来发消息,而且有提到,如果用户关闭了服务通知频道,然后再打开的话,则这个频道原先是。为不同的使用场景创建不同的频道是个比较好的做法,以方便用户有更细的选择,比如,我觉得电话比较重要,我就可以打开 “Linphone 来电通知” 这个渠道中的悬浮窗权限,其它频道的全都关闭。我发现微信的3个频道中,有两个频道的 “悬浮通知权限” 是开的,有一个是关闭的,这是什么API控制的呢?了,这也是一个细节点。

2024-03-18 18:17:56 3005 1

原创 Manning技术出版公司

有些国外翻译图书中提供的源码下载连接可能会失效,这时就可以尝试在这个网站中搜索这本书,如果有的话就会提供有源码下载,非常方便。想学某些技术也可以在这里搜索,虽然这些书都是英文的,但是你可以知道有这样一本书。Manning 是一家美国的技术出版公司,专门出版与计算机科学、信息技术和编程相关的图书和教育资料。该公司成立于 1990 年代初期,是技术图书领域的知名品牌之一。Manning 公司的中文翻译名字可以是 “曼宁”。

2024-03-14 09:06:48 820

原创 测试WebView的文件上传

但是这个方式呢,就只能是从文件管理器中选择,不会使用设备实时捕获的,而且多选也是没有的,只有单选。创建的文件选择器效果不是很理想,所以要想实现比较好的文件选择效果的话需要自己去实现了,但是比较麻烦,所以可以使用一些第三方的库,比如。不过公司项目没有要求那么细,我也就懒得去找更好的实现,将就着用吧。这里加了一段js,用于把选择的图片展示出来。标签中的属性来测试Android上的文件选择效果。就表示多选,不需要赋值,不写这个就是单选,而且也是没有多选的,不管你是否设置了。经测试好像也一样,只要写了它,则。

2024-03-11 16:37:23 775

sokit-1.3-win32-chs(中文版)

sokit是一个开源项目,是一个TCP / UDP 测试工具,用来接收,发送,转发TCP或UDP数据包。 项目地址: http://code.google.com/p/sokit/、https://github.com/sinpolib/sokit。

2023-02-21

空空如也

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

TA关注的人

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