- 博客(43)
- 收藏
- 关注
原创 Android 设备管控开发实战:自定义 Launcher 如何只显示指定 App?
设备上的应用可能很多,但自定义 Launcher 的桌面只需要出现几个业务 App。要完成这个功能,核心不是“隐藏系统应用”,也不是维护一份安装包列表,而是控制 Launcher 自己渲染哪些可启动入口。示例使用 Kotlin、Jetpack Compose 和 Android 公开 API;其中核心接口从 Android 5.0(API 21)可用,项目的实际minSdk还应满足所选 Compose 版本。最终效果很明确:白名单以外的 App 即使已经安装,也不会出现在这个 Launcher 的桌面上。
2026-08-28 18:06:00
351
原创 Android 设备管控开发实战:远程画面连续采集怎么做?WebRTC 推流的帧率、编码、背压与断线恢复
路线延迟代价循环截屏 + 上传1-3 秒带宽大、无降级手段MediaRecorder 录文件分钟级是"回看"不是"看"WebRTC 推流亚秒级需要信令服务器WebRTC 一次性解决三个问题:VP8/H.264 硬编码把带宽压到几百 kbps,码率自适应内建,ICE 断线有明确的状态回调。内网/局域网场景,它是普通三方 APK 做连续画面采集的唯一合理路线。
2026-08-27 14:32:44
252
原创 一张照片和一段声音如何生成口播视频:MiniMax H3 音画同步实测
本文记录一次 MiniMax H3 图片加音频生成短口播视频的测试,重点核对音频与视频流时长、嘴型变化、人物身份稳定性及可见缺陷。结果仅适用于本次短时正脸样本,不能外推到长视频、侧脸、遮挡或复杂动作。
2026-08-26 10:59:37
206
原创 只给一张台灯图,AI 真能做出广告吗?我用 MiniMax Design 做了条 15 秒成片
镜头先看到灯体细节,再缓慢拉回完整产品。背景尽量干净,为产品名称和收尾广告语留出空间。三段生成完成后,我再把它们按“需求—使用—产品”的顺序剪成 15 秒。这个顺序比单纯从远景推到近景更像广告,因为每次切换都在回答一个新问题。
2026-08-23 21:21:40
106
原创 不会写歌,也能拥有自己的歌?我把10年真实经历交给 AI,它生成了两首完整歌曲
同一段提示词,这次一次返回了两个版本:《把光做出来》时长 3 分 12 秒,《把虚无变成存在》时长 2 分 41 秒。两首都有主歌、副歌和桥段,也都不是同一段旋律简单换名字。我更愿意把《把光做出来》作为这次的成品。它的第一段就落在“第一次把应用装进手机”这个真实节点上,副歌又反复唱“把光做出来”,和我一直喜欢把想法做成真正可用的东西这件事能接得上。第二首并不是不能听,它的副歌“从发烫的旧手机,到和 AI 对话的现在”甚至更直接。但个别句子为了押韵显得有些生硬,例如“微小的屏幕跑通了第一行错”。
2026-08-22 19:26:37
203
原创 Android 设备管控开发实战:普通三方 APK 如何实现“设备锁定”并限制用户退出?
普通三方 APK 不具备系统 Kiosk 权限,仍可通过持久化状态、全屏锁定页、无障碍离开拉回与顶部辅助功能窗口形成可恢复的设备锁定闭环。本文给出完整 Kotlin 实现、解除顺序与明确能力边界。
2026-08-19 18:56:33
243
原创 Android 设备管控实战:一层透明遮罩,如何限制下拉状态栏和底部导航手势?
普通三方 Android 平板无法修改 ROM、也没有 Device Owner 时,怎样限制顶部下拉和底部导航手势?本文用两个透明 TYPE_ACCESSIBILITY_OVERLAY 窄窗口,给出窗口参数、WindowInsets 尺寸、旋转重建、启停生命周期与目标机型验收方法。
2026-08-17 14:20:45
249
原创 秋招简历不会写?我把 8 行流水账交给 AI,它直接做成了一页可编辑简历
最后拿到的不是一段建议,也不是一张只能看的图片,而是三个可以继续使用的东西:一份整理后的简历内容、一份可编辑 HTML,以及一页 PDF。图 1|8 行流水账变成一页简历。
2026-08-16 16:24:50
315
原创 DeepSeek 新开源 Harness:AI 开始给自己写插件了
图 1|DeepSeek Harness:一个可以让 Agent 动态增加工具与界面的开源底座一个 AI 工具少了你想要的功能,通常只有两条路:等官方更新,或者自己去找插件。比如,你对它说:给聊天页加一个任务进度板,再增加一个“一键扫描项目”的工具。在官方提供的 Cordis 演示模式里,Harness 中的 Agent 可以先检查当前运行环境里有哪些工具、服务和界面位置,再现场生成一个临时插件。你确认之后,新面板可以挂进当前页面,新工具也能出现在接下来的对话里。不满意,可以让它做第二版;
2026-08-16 16:24:12
338
原创 只给一张正面图,AI 1 分钟真能补出椅子背面?Ctruh Studio 公开演示拆解
Ctruh Studio 的价值很清楚:过去需要专业团队才能完成的一段 3D 展示流程,正在被压缩成普通人也能尝试的浏览器工具。对商品展示、方案沟通和内容创作来说,这已经足够有吸引力。AI 生成的背面,是一个“可能正确”的版本,不是被相机记录过的事实。如果你把它当成快速展示工具,它会很好用;如果你把它当成实物扫描仪,它就会制造错误期待。如果让你测试这把椅子,你最想先转到哪里:背面、底部,还是扶手连接处?真正有意思的不是它生成得多快,而是你转过去时,能不能一眼发现 AI 猜错了哪里。
2026-08-14 23:28:19
169
原创 主线程明明是空闲的,为什么仍然 ANR?3 个真实 Trace 的证据链复盘
先看第一份现场。系统明确判定发生了输入 ANR,可 Trace 里的主线程既没有卡在业务代码,也没有等待 Java 锁,而是停在,看起来只是在等下一条消息。主线程都空闲了,系统为什么还说应用无响应?问题到底出在应用、系统负载、GC,还是 Trace 根本没有拍中现场?这篇不先给结论。我选了三份容易误判的线上样本,按照当时实际可获得的证据,一步步把判断范围收紧。分析 ANR 最重要的不是找到一个可疑函数,而是区分三件事:系统已经确认的触发事实、Trace 采样时看到的状态,以及仍然缺失的因果链。
2026-08-14 18:49:39
320
原创 Android ANR 到底怎么定位?从触发原理到日志判断的完整方法
线上分析 ANR 时,经常会遇到一份看起来互相矛盾的日志:系统明确记录了,但 Trace 里的主线程却停在,像是在安静地等待下一条消息。如果只看主线程当前栈,很容易得出“应用没有卡住”的结论;如果只看某个醒目的函数名,又容易把采样时碰巧执行的代码当成根因。先从 Reason 确认系统等待的对象,再对齐 ANR 判定与 Trace 采集时间,最后沿主线程、锁、Binder、窗口和系统资源补齐因果链。
2026-08-14 18:49:17
535
原创 Android 设备管控开发实战:第三方设备如何增强管控 App 保活与拉活?Native 守护实战
整个闭环必须区分五个动作。单独使用其中任何一个,都不能得到完整效果。层级触发条件实现动作解决的问题不能解决的问题亮屏保活屏幕亮起、核心 Service 存活前台承载循环媒体状态让核心进程保持活跃,降低被后台回收的概率不能阻止厂商整包清理熄屏保活屏幕关闭停止媒体,尝试启动 1 像素 Activity在旧系统或特定 ROM 上维持可见进程状态,同时避免长时间媒体播放触发耗电治理Android 10+ 后台 Activity 启动可能被限制死亡检测核心或辅助进程退出。
2026-08-13 21:20:10
304
原创 Android 设备管控开发实战:常见保活与拉活方案怎么组合,实测能到什么程度?
是在进程仍存活时降低被回收概率;是在进程已经退出后,重新获得执行入口并恢复业务。死亡检测只是拉活的前置条件,不等于已经把进程拉起来。本文给出常见的“保活 + 拉活”组合,并结合原项目已有记录说明它们能做到哪里。强制停止后,普通 APK 没有公开接口保证自行恢复。
2026-08-13 21:19:39
799
原创 Muse Code 到底能做什么?Meta 想让 AI 把复杂编程任务真正做完
Muse Code 的作用可以浓缩成一句话:它不是让 AI 在一次回答里写更多代码,而是让 AI 在真实代码库里持续计划、执行、验证,并在中断后接着完成任务。这也是它真正值得关注的原因。模型负责变聪明,Muse Code 负责把这种能力组织成可以工作的系统。至于它能否稳定承担生产级开发,还要等待更多独立实测;但“会回答”与“能把任务推进下去”之间的差别,已经越来越清楚了。
2026-08-10 23:14:32
348
原创 把一个 App 想法交给 AI,它真能从界面设计一路做到上线吗?
你可以上传自己的品牌系统,也可以从零创建一套颜色、字体和组件规则,然后让它们一键应用到所有页面。这样做的意义很实际:不是某一张图好看,而是整个产品不容易在迭代中逐渐走样。官方页面里最重要的一句话其实是:设计、开发和发布不再需要反复交接。少一次导出、少一次重建,也就少一次上下文丢失。这里必须把两个层级分开:上面的能力来自 Replit 官方公开信息,说明这条产品路径已经出现;但它不等于我们已经对复杂应用做过独立压力测试。官方展示解决“它能做什么”,工程验证才回答“它能稳定做到什么程度”。
2026-08-10 11:54:24
469
原创 Android 设备管控开发实战:普通三方 APK 如何实现远程截屏?Accessibility 与 MediaProjection 怎么选
普通三方 APK 如何实现单次远程截屏?本文聚焦 AccessibilityService 与 MediaProjection 两条公开路线,给出版本化授权规则、核心 Kotlin 实现、ImageReader 行填充裁剪、幂等资源释放和真机验收清单。
2026-08-06 21:31:04
228
原创 把一本小说交给 AI,它真能做成一款“能通关”的游戏吗?
QA Skill 不接受“代码看起来没问题”,而是检查启动、输入、状态、完整流程、结果和重开。失败项会重新进入构建循环,直到证据达到门槛。
2026-08-05 23:04:06
508
原创 Android 设备管控开发实战:如何只允许指定 App 或 Channel 的通知出现?
受控设备上通常不需要“关闭所有通知”,而是只保留业务真正需要的几类:管控端自己的前台服务通知、指定业务 App 的全部通知,或者某个 App 中用于告警的单一 Channel。其他营销、推荐和无关提醒都不应留在通知栏。这篇只解决这个功能。三方设备使用用户明确开启的通知使用权,在通知发布后立即判断并取消;自研 ROM 把同一套匹配规则前移到系统通知入队之前。策略下发、版本管理、保活、状态栏和手势控制不在本文展开。本文示例只读取通知的包名与 Channel ID,不读取标题、正文、验证码等内容。
2026-08-05 21:20:41
385
原创 Android 设备管控开发实战:无障碍如何准确识别当前前台 App?
设备管控经常需要知道“当前正在使用哪个 App”。如果直接把保存为前台包名,输入法、通知栏、权限弹窗和桌面中转都可能造成误判。这篇文章只完成一件事:把无障碍事件转换成稳定的前台 AppStateFlow。不讲白名单、自动拉回、使用时长、策略、保活、手势或截屏。适用于设备所有者或使用者明确知情并开启无障碍服务的受控终端。本文的“前台 App”指可持续消费的活动应用窗口;短暂覆盖窗口不替换最近稳定值。
2026-08-04 22:09:32
316
原创 Android 设备管控开发实战:如何管控应用安装、更新与卸载
这篇文章只解决一个问题:管控端怎样自动安装、更新或卸载指定应用,同时阻止设备使用者自行安装和卸载。实现分为两类:系统由自己维护时,在 ROM 的包管理链路中控制;使用第三方系统时,由普通管控 APK 拉起系统页面,再通过已授权的无障碍服务控制确认或取消。以下实现用于设备所有者或使用者明确知情并授权的企业终端、教育平板、门店设备等受控场景。
2026-08-04 21:45:35
852
原创 Android 设备管控开发实战:企业受控终端的 DNS 域名策略实现
本文面向经授权的受控 Android 终端,使用 VpnService 仅将虚拟 DNS 的 /32 路由接入 TUN,解析并规范化 QNAME,按放行与拦截规则返回 NXDOMAIN 或转发至设备原有 DNS,并给出规则热更新、验收方法与能力边界。
2026-08-03 12:13:45
312
原创 Android 设备管控开发实战:如何限制指定 App 使用?禁用、可用时段与时长控制
在教育平板、门店终端和企业手持设备上,“限制应用使用”通常不是一个简单的开关。产品可能要求游戏类 App 完全不可用,视频类 App 只能在晚间开放,某个学习 App 全天都能打开,但每天累计不能超过 40 分钟。三个需求看起来都叫“应用限制”,真正落到设备端时,判断依据和执行方式却并不相同。另一个容易被忽略的差异来自设备能力。自研平板能够调用系统或 ROM 提供的包名禁用能力,控制结果可以直接交给系统执行;
2026-08-03 12:12:40
346
原创 Android 设备管控开发实战:普通三方 APK 如何限制设备只使用指定 App?无障碍监听与自动拉回
很多“专用设备”项目收到的第一条需求都很直接:上课时只能使用学习 App,展台只能运行演示 App,门店终端只能进入收银 App,仓库手持机只能打开作业 App。产品把它概括成一句“锁在指定应用里”,开发却很容易在第一步就选错技术路线。原因是,“看起来只能使用一个 App”至少有三种完全不同的实现层级:普通三方 APK 可以在用户明确授权后,通过无障碍服务识别前台应用并自动拉回;企业完全托管设备可以使用 Device Owner 与 Lock Task;
2026-08-02 11:50:17
339
原创 Android 设备管控开发实战:Device Admin、Device Owner 与系统应用,权限边界一次讲清
Android 设备管控不是不断申请权限、增加 Receiver 或捕获异常,而是先回答三个问题:应用现在是什么管理角色?安装和签名身份是什么?目标策略在当前系统与用户范围内是否被允许?把这三个问题统一收敛到角色识别、能力矩阵和策略执行闭环之后,状态栏控制、Kiosk、应用管理、设备保活等功能才有稳定的工程基础。否则,同一段代码在测试机上成功、在客户机上失败,将会成为长期无法解释的常态。先判断能力,再执行策略;失败必须可解释,结果必须可验证。
2026-08-02 11:49:25
45
原创 弱网诊断探索之路
本次分享的主题是“弱网环境下的应用优化和诊断策略”。目标是通过深入剖析常见的弱网问题,探索应用在复杂网络环境中的性能优化方法,并分享一些实战经验和技术工具,帮助大家提升用户体验。
2026-08-01 00:06:14
230
原创 AI Agent 越能干,单步审批越危险:长周期 Agent 为什么需要“轨迹级治理”?
长周期 Agent 让 AI 能够处理更复杂、更开放的工作,但也把安全问题从“允许哪一个动作”推向了“是否允许这条任务轨迹继续发展”。轨迹级治理并不是让 Agent 每一步都停下来等待,而是让系统知道:Agent 最初要做什么,现在正在做什么,已经产生了哪些影响,以及什么时候必须把控制权交还给人。未来真正可靠的 Agent,不是从不犯错的 Agent,而是目标可检查、过程可观察、关键节点可干预、出现偏差可回滚的 Agent。
2026-07-30 23:00:25
338
原创 多 Agent 不是多开几个聊天窗口:主 Agent、子 Agent、验证 Agent 怎么分工
多 Agent 的价值,不是让更多模型同时开口。而是把一个复杂任务分成决策、执行和验证,让每一步都有边界、证据和退路。1 个主 Agent + 1 个执行 Agent + 1 个验证 Agent。下次遇到一个预计超过 30 分钟、又有明确验收标准的任务,拿上面的模板跑一次。如果你仍然要亲自当“第四个 Agent”不断协调,说明任务边界还不够清楚。
2026-07-29 22:43:42
357
原创 从 Prompt Engineering 到 Loop Engineering:AI 开发正在进入闭环工程时代
Loop Engineering 的目标不是让人离开开发过程,而是把人从低价值重复操作里挪出来,回到更重要的位置:定义方向、边界、风险和最终判断。Loop Engineering 的价值,就是把“继续 Prompt、检查反馈、决定下一步”这些重复动作从人身上抽出来,交给系统处理。从 Prompt 到 Loop,迁移的不是“写 Prompt”这个动作,而是人原来在每一轮里承担的判断、记录和推进工作。很多失败的 Agent 项目,不是模型不够强,而是只设计了“怎么跑”,没设计“怎么停、怎么管、怎么追责”。
2026-07-28 20:08:25
556
原创 Android AMS分析
AMS(ActivityManagerService)是Android系统的核心服务,运行于系统进程(由Zygote进程fork)中。它通过Binder IPC机制与应用进程交互,统一管理四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的生命周期、进程调度及系统资源分配,是Android框架层的“中枢神经系统”。
2026-07-27 22:21:24
602
原创 Prompt、Agent、MCP、Skill 到底啥关系?给你一张 AI 工具圈地图
搞清楚这 5 层不是为了显摆术语。是为了在你选工具、做决策、读新闻的时候,知道自己"买的是什么"和"现在用到哪一层"。当你能在 30 秒内说清 Prompt 和 Skill 的区别,你就跑赢了 90% 的 AI 工具使用者。3:Prompt 已死,因为现在 Agent 自动了错。Prompt 没死,只是从你手写变成系统自动生成。Agent 的每一步行动、Skill 里的每一段说明、System Prompt 的每一行设定——本质上都是 Prompt。它从前台退到了幕后,但没消失。
2026-07-26 21:00:05
218
原创 OpenClaw 企业自动化落地实践
客户愿意付费的结果可复制的交付流程可持续的续费关系真正能赚到钱的人,往往不是技术最强的人,而是最早找到具体场景、最快交付结果、最会持续复用的人。如果你要一个最短路径,请记住这句话:用 OpenClaw 赚钱,先做一个行业里的“小工具人”,再慢慢升级成“小系统”,最后才有机会变成“小平台”。
2026-03-11 11:11:59
335
原创 Android Studio依赖冲突以及重复查询与解决
依赖冲突问题解决1.build报Program type already presentle类冲突;2.有多个版本的引用包需要查询包的引用位置3.利用gradlew :app:dependencies命令行输入,即可打印出当前app下所有引入包的结构,找出对应包所在的引用;4.使用exclude去除多余的引用implementation('com.squareup.retrofit2:retrofit:2.3.0') { exclude group: 'com.google.
2021-04-12 23:30:44
2106
原创 try,catch,finally,return执行顺序
try,catch,finally,return执行顺序1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在fi...
2018-10-16 16:05:25
190
原创 Android常用adb命令
1、安装APK(如果加 -r 参数,保留已设定数据,重新安装filename.apk) adb install xxx.apk adb install -r xxx.apk 2、卸载APK(如果加 -k 参数,为卸载软件但是保留配置和缓存文件) adb uninstall xxx.apk adb uninstall -k xxx.apk 3、查...
2018-07-16 14:58:28
799
1
原创 带删除按钮的EditText 带密码显示隐藏
package com.iim.ego.widget;import android.content.Context;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.text.Editable;import android.text.InputType;impo...
2018-04-18 17:43:36
956
4
原创 Android带删除按钮的编辑框
直接在XML布局文件中引用布局,在Activity中进行焦点监听,有焦点且有输入时才显示删除图标。public class EditTextWithDel extends EditText implements View.OnFocusChangeListener { private Drawable imgAble; private Context mContext; ...
2018-02-22 11:30:05
916
原创 Android Stuido 快捷键
ctrl+shift+(小键盘上的减号 -)快速收起代码ctrl+alt+t try,if等方法快速补全ctrl+alt+f7 查询jar包中的方法settings.gradle 添加已移除的modulealt+shift+R 修改全局变量名alt+shif+m 方法快速提取...
2018-02-12 17:13:41
194
转载 第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
前言 前些天,测试MM发现了一个比较奇怪的bug。 具体表现是: 1、将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 【闪屏页Activity】, 然后跳转 【主页Activity】) 2、然后MM在 【主页Activity】 时按下了 【Home键】,回到桌面 3、再点击app的icon图标,原谅耿直的我们都是觉得应该直接回到【主...
2018-02-12 16:49:29
439
可审计多 Agent 长任务工作流实战包:权限门禁、断点恢复与轨迹报告
2026-08-19
Android 受控终端 API 设计实战包:OpenAPI 3.1、Mock、Postman 与契约测试
2026-08-19
Android 双路线截屏 Demo(Accessibility + MediaProjection 源码 + APK)
2026-08-17
Android 无障碍限制状态栏下拉 Demo(透明 Overlay 源码 + APK)
2026-08-17
Cursor 对话知识沉淀 Skill:本地归档、智能提炼与周报
2026-08-13
Android无障碍指定应用守护Demo:普通APK限制前台应用(Kotlin源码+双APK)
2026-08-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅