自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 局域网通信时,解决在一些设备上NsdManager发现服务失败的问题

Google 提供了NsdManager Api 以支持局域网发现服务,但是在实际中,一些个别型号手机设备上,NsdManager 发现服务失败,mdns 解析失败,找不到对应的服务名称,进而无法解析出本地网络内的host 和 端口。// 找到当前设备在局域网中的 IP 地址,以便用于本地通信、服务发现或其他网络相关操作。//此处对发现的服务进行过滤去重,获取到后,回调到UI线程去更新;// 过滤 IP 地址: 过滤ipv6地址,过滤回环的 IPv4 地址。// 需要再异步中开启发现服务。

2024-09-03 16:25:32 1301

原创 Kotlin compose 实现Image 匀速旋转

Kotlin compose 实现Image 匀速旋转

2024-08-08 19:39:05 1662

原创 Canvas 实现四个扇形组成的圆,点击或触摸时,点在哪个扇形里,绘制扇形渐变背景色

1. 实现一个圆形;2. 在圆形上绘制4个扇形;3. 每个扇形点击时,是一种颜色;非点击时,是一种颜色;4.长按扇形时,出现长按的背景;

2024-08-08 19:28:29 1337

原创 NsdManager 发现两个服务,但是解析ip 和 port 的时候,只能解析一个,什么原因?

1. 将发现的服务添加到队列中等待解析。发现多个服务并尝试解析IP和端口时,只能解析一个服务。实例: 每个服务解析请求应该是自己独立的。2. 逐一解析服务: 避免同时解析多个服务,而是一个接一个地解析,确保上一个解析完成后再开始下一个。以上方式确保每次只解析一个服务,从而避免竞争条件和回调覆盖的问题。

2024-08-02 19:01:20 1224 1

原创 java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

1. 状态丢失:在某些情况下,如果应用程序在提交事务后被系统终止,可能会丢失一些状态或数据。2. 不一致的用户体验:由于状态可能丢失,用户可能会看到不一致的界面或操作,这可能会导致混淆或不良体验。之后尝试执行 Fragment 事务(如添加、移除或替换Fragment),这会导致状态丢失问题。总结: 根据实际情况选择合适的方法来确保Fragment事务在正确的生命周期内执行。3. 调试困难:由于状态丢失的问题在调试过程中可能不容易发现,因此使用。这会允许状态丢失,但要谨慎使用,因为可能会导致意外问题。

2024-07-31 17:16:18 1242

原创 firebase- sdk 更新记录和 maven仓库

1. firebase-crashlytics maven 仓库对应的各种版本;2. Firebase Sdk 更新记录和对应的版本;

2024-07-30 14:21:21 437

原创 OAuth 2.0 介绍和使用示例

OAuth 2.0 是一种开放标准授权协议,用于安全地让第三方应用访问用户在另一个服务上的资源,而无需暴露用户的凭证。OAuth 2.0 主要用于 Web 应用程序、桌面应用程序、移动应用程序和物联网设备等场景。

2024-07-29 19:15:55 1354

原创 WiFi 局域网通信 - 发现服务和解析

1. nsdManager + NsdManager.DiscoveryListener + NsdManager.ResolveListener2. 在onStartDiscoveryFailed 和 onStopDiscoveryFailed里不要调用nsdManager.stopServiceDiscovery(this) 方法,会出现crash问题;//SERVICE_TYPE 为你自定义的服务名称,比如 const val SERVICE_TYPE = "_test-rct._tcp."

2024-07-28 17:09:38 1726

原创 JWT(JSON Web Token)

JWT(JSON Web Token)是一种用于在各方之间作为 JSON 对象安全地传输信息的紧凑、URL 安全的方式。JWT 由于其紧凑和自包含的特点,非常适合于在移动设备等资源受限的环境中使用。

2024-07-26 17:38:10 1156

原创 GPT-4o mini 优势和性能有哪些

GPT-4o mini 的设计目标是在保持高效性能的同时,提供强大的自然语言处理能力,使其成为一种经济实惠且灵活的解决方案。GPT-4o mini 是 OpenAI 开发的一种较小的语言模型版本,旨在提供高效的自然语言处理能力,同时减少计算资源的需求。

2024-07-25 18:56:15 990

原创 DiscoveryListener 和 ResolveListener 的 异常 java.lang.IllegalArgumentException

1. 在调用 stopServiceDiscovery 的方法的时候, 监听器 NsdManager.DiscoveryListener没有被注册,即 没有调用 NsdManager 的 discoverServices方法,把监听器传进去。2. 两次或多次调用 stopServiceDiscovery 方法,在调用 stopServiceDiscovery 方法前,先判断是否注册了监听器,可用标志位自己实现,因为Android 系统没有提供判断监听器是否被注册的函数。先看crash 日志;

2024-07-24 16:02:38 589

原创 RecyclerView 滚动到指定position,且position所在的view 居屏幕中间显示

1. RecyclerView 滚动到指定position,且position所在的view 居屏幕中间显示;2. 自定义CenterSmoothScroller 实现LinearSmoothScroller;3. 自定义smoothScrollToPositionView的函数;4. 自定义scrollToPosition 函数,然后recyclerView.post;5. 立即滚动到指定位置

2024-07-23 14:13:58 2206

原创 Android14 - 前台Service、图片选择器 、OpenJDK 17、其他适配

1. Android14适配 - 前台服务;2. Android14适配 - 图片选择器;3. Android14适配 - OpenJDK 17;4. Android14适配 - 动态代码加载;5. Android14适配 - 后台activity 启动处理Intent/Service的限制;6. Android14适配 - 压缩路径遍历;7. Android14适配 - MediaProjection 拍摄会话都需要征得用户同意;

2024-07-22 12:26:20 2098

原创 Android 14 适配之— BluetoothAdapter、JobScheduler、 Tiles

1. BluetoothAdapter 改动:2.JobScheduler 的改动;3.TileService#startActivityAndCollapse(Intent)

2024-07-20 23:28:45 1066

原创 Android 14 适配之 - 隐式/显示 Intent 和 广播适配

Android 14 适配有很多方面,以上从 隐式/显示 Intent 打开组件 和 广播适配两个方面介绍适配方式。

2024-07-19 19:26:04 1752

原创 Android 14 适配之 - 全屏 intent 通知

Android 14 及之后变化,对于以 Android 14(API 级别 34)或更高版本为目标的应用,为获准使用此权限的App提供仅限于通话和闹钟两种。对于在用户更新到 Android 14 之前,在手机上已经安装的应用仍拥有此权限,用户可在设置里开启和关闭此权限。全屏 intent 通知 使用场景是 :需要用户立即注意的高优先级通知,例如用户来电或闹钟设置。在 Android 11(API 级别 30)中,任何应用都可以在手机处于锁定状态时使用。发送全屏 intent。启动设置页面,以此授予权限。

2024-07-19 17:58:42 2172

原创 Shell 构建flutter + Android 生成Apk

以上是在Android 环境下,flutter 和 Android 混合开发,shell 打包Apk,并把Apk 上传到fir.im上的具体步骤;欢迎讨论和指正;

2024-07-19 10:39:31 1452

原创 Shell 构建flutter + Navtive 生成IPA

在build_iOS 文件夹配置打包的DEVELOPExportOptionsPlist.plist(dev 构建)或AppStoreExportOptionsPlist.plist(Release 构建)或ADHOCExportOptionsPlist.plist(adhoc 构建),plist文件先用Xcode打包,取出对应的plist,按以上重命名plist文件后,copy进build_iOS文件夹;"~~~~~~~~~~~~选择打包方式(输入序号)~~~~~~~~~~~~~~~"

2024-07-18 19:06:46 1100

原创 Kotlin实现SHA-256哈希和RSA签名

0. 对一段原始字符串,用SHA 哈希签名1. 使用公钥钥key 对私钥签名的SHA-256哈希的字符串验证:2. hashMsg 是对原始字符串 SHA-256哈希后的字符串;3. 使用私钥key 对SHA-256哈希后的字符串签名;signedMessage 是私钥签名后的字符串;4. 用公钥key验证私钥签名的信息是否正确。

2024-07-18 18:50:15 1106

原创 生成式 AI 的发展方向 - 是 Chat 还是 Agent

随着生成式AI技术的迅速进步,其应用领域和潜在影响力变得越来越广泛和深远。未来,生成式AI的整体发展方向可以概括为以下几个关键方面:。核心目标:Chat:旨在实现自然、人性化的语言交互。Agent:旨在自主决策和任务执行。技术侧重:Chat:侧重于NLP技术、对话管理和多模态交互。Agent:侧重于强化学习、任务规划和环境感知。应用场景:Chat:广泛应用于客服、教育、娱乐等领域的交互任务。Agent:应用于自动驾驶、机器人、智能系统等需要自主行动的任务。

2024-07-18 14:35:29 630

原创 生成式 AI 的发展方向,是 Chat 还是 Agent?

Agent将实现更高级别的自主决策和任务执行能力,具备更强的环境感知和自适应能力,并确保在复杂任务中的安全性和可靠性。2.上下文理解:使用长短期记忆(LSTM)、门控循环单元(GRU)、BERT、GPT等模型来理解和生成上下文相关的对话。3.多轮对话:利用对话状态跟踪(DST)和对话管理(DM)技术,实现多轮对话的逻辑和流畅性。5.多模态交互:集成语音识别、语音合成、图像识别等技术,实现文本、语音、图像的综合处理。3. 环境感知:利用传感器融合、计算机视觉、环境建模等,实现对环境的全面感知和理解。

2024-07-18 14:20:37 829

原创 kotlin compose 实现应用内多语言切换(不重新打开App)

1. 在手机应用内实现语言切换;2.切换语言时,不需要重新打开应用;3.kotlin compose 实现UI组件;

2024-07-18 10:52:18 1576

原创 kotlin 退出Activity 平滑动画

1. kotlin 退出Activity 平滑动画2. 在资源的动画文件夹即anim下创建两个文件,即 xxx_from_left 和 xxx_to_right。if (Build.VERSION.SDK_INT >= 34) {//34及以上的实现方式。} else {//34以下的实现方式。

2024-07-18 09:44:26 812

原创 retrofit2 + okhttp3 使用示例

*** 重写拦截器*/// 获取原始请求和Body// 新建新的FormBody builder// 获取原始请求体中的key和value.let {// 获取公共参数 示例// 增加公共参数 示例// 构建新的请求以上是使用 retrofit2 + okhttp3 的方式,快速实现Api 接口请求,非常简单实用,适用于常见的应用开发。

2024-07-17 19:06:20 996

原创 Insufficient text color contrast ratio

1.你的 Android 应用中的按钮(AppCompatButton)的文本颜色与背景颜色之间的对比度不足;这种对比度不足会影响可访问性,使视力受损的用户难以阅读文本。使用对比度检查工具(例如 WebAIM contrast checker)计算当前对比度。修改文本颜色或背景颜色,以达到更高的对比度。大字体文本(18pt 及以上,或 14pt 加粗及以上):对比度至少为 3:1。在你的 XML 布局文件或代码中,更新按钮的文本颜色和背景颜色。找出按钮的当前文本颜色和背景颜色。

2024-07-17 15:03:19 2079

原创 将.aab 文件转为.apks,然后本地命令安装;查看对应的签名信息

1. 将aab 文件转为apk,本地安装;查看apk签名信息;2. 下载bundletool-all-1.17.0.jar; 3. 使用bundletool提供的 bundletool-all-1.17.0.jarr 生成 .apks,可带release签名和不带;4. 安装.apks, 分为两种方式安装;

2024-07-17 14:54:37 2443

原创 D-U-N-S编号-邓白氏编码查询

3.查询链接:https://developer.apple.com/enroll/duns-lookup/#!2. 简单的方式,在苹果开发者账号查询,苹果会把邓白氏码发送到指定的邮箱;1. Google 开发者认证需要验证邓白氏码;

2024-07-15 20:09:46 3799

原创 设置TextView 渐变背景和字体渐变色

val spannable = SpannableString("文本内容")第二步:设置线性渐变,起始颜色和结束颜色。第一步:找到 TextView 的ID。第三步:设置textview的绘画阴影。第四步:设置textview。

2024-07-15 10:26:18 1260

原创 https 单向认证和双向认证

双向认证,也称为双向SSL/TLS认证,是指客户端和服务器相互验证对方的身份:服务器向客户端提供数字证书,客户端也需要提供自己的数字证书供服务器验证;客户端不仅被动接收数据,还需要主动证明自己的身份;服务器验证客户端的公钥数字证书以确认与其连接的客户端是合法和可信的。单向认证是客户端(通常是浏览器)验证服务器的身份:服务器向客户端提供数字证书,客户端通过验证该证书的真实性以确认与服务器的连接是安全的。

2024-07-14 15:59:17 2617

原创 BottomNavigationView + ViewPager2 实现底部导航栏切换 + 自定义渐变

BottomNavigationView 的默认样式和行为是为标准使用场景设计的,如果需要进行深度定制,比如复杂的动画效果或不常见的布局,可能需要大量的代码来实现。BottomNavigationView 和 ViewPager2 的结合能够提供优秀的用户体验,同时简化开发过程,提高应用性能。

2024-07-14 15:14:27 1304

原创 Compose实现滚动视图+指示器

【代码】Compose实现滚动视图+指示器。

2024-07-12 19:15:00 692

原创 Compose实现横排(2.1显示)可滚动的图片

参考UI设计稿计算;比如宽度小于高度的情况下,以宽度作为等比例缩放点计算;反之,则以高度计算;适配各种屏幕宽度,2.1 张图片铺满整个宽度,可以横向滑动;

2024-07-12 18:36:16 828

原创 mDNS 介绍及代码示例

mDNS(Multicast DNS)是一种通过使用多播协议在本地网络中进行主机名解析的协议。它的设计使设备可以在没有中央DNS服务器的环境中自动发现和解析设备的主机名。以下是详细的工作原理和代码示例。值得一提的是,通过查询而非直接广播,mDNS 设计能够有效减少网络负载、节约资源、提高通信效率、增强安全性、管理冲突和干扰,同时更适应动态网络环境。使得 mDNS 成为小型网络和物联网环境中自动发现和解析主机名的理想解决方案。

2024-07-12 11:30:47 3962

原创 自定义搜索框

kotlin compose 自定义搜索框 /清除内容的x图标 R.mipmap.search_clear。modifier = if (hasFocus) { //有焦点处边框改变。//搜索图标 search_img。* onSearchCompleted 搜索完成回调。* colorBorder 边框线的颜色。

2024-07-12 11:03:20 799

原创 防止API请求重复攻击

在 API 设计中,防止请求重复攻击是确保系统安全性和稳定性的关键部分。以下是一些有效的技术和策略来防止 API 请求的重复攻击。

2024-07-10 19:13:53 1903

原创 水滴状的拖动进度条

【代码】水滴状的拖动进度条。

2024-07-10 09:54:54 453

原创 ImageView 使用线性插值器 - 实现无线匀速循环

ImageView 使用线性插值器 - 实现无线匀速循环。

2024-07-10 09:38:21 127

原创 用 RecyclerView 实现刻度尺或仪表盘功能

RecyclerView 实现刻度尺(或标尺)的功能

2024-07-09 18:58:54 1120

原创 数字分别转为字节长度 1,2,3,4 的 字节数组

【代码】数字分别转为字节长度 1,2,3,4 的 字节数组。

2024-07-07 20:20:18 199

原创 判断当前网络是否已连接

【代码】判断当前网络是否已连接。

2024-07-07 17:40:24 212

WiFi本地通信,多服务发现和建立本地socket连接

1. WiFi本地通信,多服务发现和建立本地socket连接; 2. 建立连接,发送本地数据包;

2024-07-28

WiFi 局域网通信 + nsd + mdns+ socket

1. 发现本地局域网服务; 2. 建立本地局域网scoket连接; 3. 建立连接,发送数据包,socket 异常处理; 4. mdns 代码示例; 5. Google 原生NSD 源码使用示例; 6. 本地dns解释; 7.稳定的本地局域网通信

2024-07-28

1. wifi 局域网通 示例;2. 发现本地局域网服务; 3. 建立本地局域网scoket连接;4.建立连接,发送数据包;

1. mdns demo 示例;2. 发现本地局域网服务; 3. 建立本地局域网scoket连接;4.建立连接,发送数据包; 5. socket 异常处理; 6.如何快速发现服务; 7. NsdManager.DiscoveryListener; 8. NsdManager.ResolveListener; 9. 发现超时,解析ip超时异常处理; 10.说明为什么发现本地服务时,有时比较慢,有时比较快; 11. 如何消除缓存的影响和合理使用缓存;

2024-07-28

6种以上的软件架构风格;

1.6种以上的软件架构风格; 2. 分布式系统; 3. 驱动设计; 4. 面向数据; 5.微服务架构设计示例; 6. 微内核架构; 7. CQRS

2024-07-22

Shell 构建flutter + Navtive 生成APK 脚本

1. Shell 构建flutter + Navtive 生成APK.txt; 2. 在Android 项目的主工程下,进入主工程文件夹,创建build-android 文件夹,在其文件夹下有build-android.sh文件; 3. cd 到build-android 目录,执行sh build-android.sh; 4. 全局变量设置 jdk 11,支持当前kotlin的build 是 jdk version 11若 set jdk 18,则会使setUrl(Boolean) 方法找不到的错误; 5. 设置gradle的全局环境变量,目前电脑的gradle 版本7.1及路径;我得设置是:export PATH=/Users/xxx/.gradle/wrapper/dists/gradle-7.1-bin/4pslxx9lrxt5svtz5wbnb6tkz/gradle-7.1/bin; 6. 设置flutter的全局环境变量;

2024-07-19

PM 管理 - 软硬件产研路程全图

1. PM 管理 - 软硬件产研路程全图; 2. 产品研发; 3. PM 管理流程图; 4. 质量管理图;

2024-07-22

1. 涉及Bass, Saas, Pass ,云原生等示例的逻辑架构图;2. 维护逻辑架构图-用户,应用、数据、感知

1. 涉及Bass, Saas, Pass ,云原生 一起的具体事例的逻辑架构图; 2. 维护逻辑架构图-用户,展示、应用、数据、感知等层次; 3. 提供参考,可根据自己业务实际情况调整;

2024-07-18

openCV手势识别-iOS 示例demo; 包括openCv 原生代码,调用接口示例,识别结果示例

1.openCV手势识别-iOS 示例demo; 2.包括openCv 原生代码,调用接口示例,识别结果示例

2024-07-09

openCV 手势识别完整demo,包含cv 原生代码,调用接口,示例说明,各种手势识别设置,内置测试数据模型

1. openCV 手势识别完整demo; 2.包含cv 原生代码,调用接口,示例说明; 3.各种手势识别设置,内置测试数据模型; 4.适用于Android 移动端; 5.openCV 调用方式和源码; 6.示例调用说明;

2024-07-09

demo - 包含 compose 各种布局实现

demo - 包含 compose 各种布局实现; 参考学习资料;

2024-07-07

Kotlin (compose)实现 webView 渲染视频,支持全屏;实现H5 返回时,一级一级返回

1. Kotlin 实现 webView 渲染视频,支持全屏;实现H5 返回时,一级一级返回; 2. 完整的demo,kotlin + compose ; 3. 打开H5时,可逐次返回,也可一次返回或关闭;

2024-07-07

多语言翻译 - 从Excel 中 批量转为xml 格式

多语言翻译 - 从Excel 中 批量转为xml 格式; 1. 下载 对应的jar 包; 2. 整理好excel 文件,格式按照附件中的excel格式; 3. shell 命令:java -jar /Users/xxxx/xxxx/Excel_Xml_conveter.jar /Users/xxxx/xxxx/Excel_Xml_conveter.xls /Users/xxxx/Movies/res 4. Excel_Xml_conveter.jar 附件核心指令包; Excel_Xml_conveter.xls 附件的核心excel 格式,格式要求.xls; /Users/xxxx/Movies/res 转换后,导出的文件路径,res文件夹里是对应的语言xml 文件

2024-07-07

Shell 构建flutter + Navtive 生成IPA

1. 建立iOS 主工程; 2. flutter 工程以git 自modle 的方式存在; 3. flutter 工程建议跟项目iOS 主工程放在同一个文件夹下; 4. 执行以上脚本命令,生成ipa;安装ipa; 5.Shell 构建flutter + Navtive 生成IPA; 6. 简述:在工程的根目录下,建立文件夹build_iOS文件,在此文件下建立build_iOS.sh的文件,把以下内容copy进sh文件; 进入build_iOS.sh 文件的目录;

2024-07-19

AccessToken 刷新流程图和具体示例

1. AccessToken 刷新流程图 2. 具体示例; 3.请求和保存说明; 4.何时更新; 5.队列请求类如何处理; 6.优先级如何处理; 7.异常如何处理;

2024-07-18

Docker的主要命令和结构示意图

1. 管理镜像命令; 2. 管理容器卷命令; 3. 镜像仓库命令; 4. 清理命令; 5. 管理容器命令; 6. 服务命令; 7. 网络相关;

2024-07-18

kotlin compose 实现 webView 加载视频,支持Webview 全屏及退出全屏

kotlin compose 实现 webView 加载视频,支持Webview 全屏及退出全屏; 资料是主要代码,配置操作:1. AndroidManifest 配置 android:hardwareAccelerated ="true" 2. 支持横竖屏旋转 android:windowSoftInputMode="adjustResize" 3. kotlin compose 实现webview 视频渲染,全屏,退出全屏 (核心资料下载)

2024-07-07

空空如也

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

TA关注的人

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