- 博客(43)
- 收藏
- 关注
原创 ios app第一次上架遇到的审核问题
说启动app,拒绝授予相机权限后,app会崩溃checkCameraPermission,触发请求权限,是在安装后第一次执行时,AVCaptureDevice.requestAccess(for: .video)执行后,在设置里会有相机权限可选::如果用户不授予,弹出下面页面,引导用户去设置。
2025-03-14 18:48:15
1112
原创 若依vue plus环境搭建
再往下,什么情况,oracle、postgres、sqlserver都要安装,赶紧往下看了看,原来是数据库选择性安装。package-lock.json是在install完成后出现的,如果npm i安装的包是混合了几个不同版本,即是下载完成,也是无法使用的,这个package-lock.json文件相当于做了一个锁定。这个记录下,也是试出来的。所以我还是使用vscode来编写代码,用命令行来构建,因为我经常切换工程,不想为了一个新项目,就装一个新的编译器。5.0够不够呢,按照网上其他文章的说法,是够了的。
2025-02-27 23:48:42
1167
原创 win11 python opencv作图像匹配小结
最近做了一个用到python opencv的项目,安装编码都是非常可快速的,使用中遇到一些奇怪问题。
2025-02-11 23:59:41
568
原创 win11下cmd设置窗口大小和位置
在启动里,如图,有一个启动大小,通过设置列和行数,可以固定调整cmd窗口大小。还有启动参数,启动位置的两个数值,对应窗口左上角的x和y坐标。cmd窗口从搜索和ai查到的都是窗口栏,选属性,点布局。花了点时间,一个个看了下。
2025-02-10 23:40:54
443
原创 python安装mitmproxy遇到的问题
加-i https://pypi.tuna.tsinghua.edu.cn/simple是为了加速下载。
2025-02-08 23:36:47
532
原创 基于asr的所见即可说方案
2、语音下达包含热词的指令 --> asr平台返回消息和语音 --> 根据asr的框架解析出意图 --> 根据意图判断是所见即可说指令,并解析出热词 --> 根据ocr解析结果,获取对应热词的坐标 --> 模拟点击 --> 点击特效。那么是否可以在前端页面每次切换时,只作一次截屏+ocr+热词上传,如果是只在当前应用内部的页面,是可以简单做到的,前端调用一个接口就行。所以,这也是一个折衷的普适方案,而且延时1s不是那么明显,等AI语音助手说完话,在作第二轮语音交互,也很自然。此方案,我认为还是偏过渡性质。
2025-02-07 23:24:07
509
原创 arkui-x 鼠标切换为键盘,焦点衔接问题
还有打开页面数据加载函数onPageShow里设置默认的focus,也调用了focusControl.requestFocus,看起来也没生效。关于这一点,是否存在鼠标和键盘切换,要求焦点无缝衔接的场景,甲方的工程师认为没有,只要单独的鼠标或者单独的键盘操作焦点,是连续的就行。总结就是:第二次键盘操作触发的焦点组件是前一次键盘操作的焦点组件,而不是鼠标悬停的焦点组件。再返回使用tab键切换回键盘控制焦点,返回到组件A,而不是组件B。先用tab键切换为键盘控制焦点,选中一个组件A;
2025-02-06 18:46:50
439
原创 android java 用系统弹窗的方式实现模拟点击动画特效
本篇记录的是系统弹窗的一个应用示例:实现点击动画效果动画效果,是指点击之后,在点击的中心坐标,播放一个固定时长的动画。因为需要能够在其他应用上播放动画,所以可以使用系统悬浮窗,即系统弹窗来实现。实现上很多可参考。
2025-02-03 23:54:46
1007
原创 android java系统弹窗的基础模板
4)需要弹出时,调用接口show(),如果弹出时,想要修改弹窗的界面参数,可在show接口里调用WindowManager.LayoutParams进一步定制。2)params = new WindowManager.LayoutParams是用来设置弹窗的参数,包括大小、坐标、透明度等。1)获取资源文件的rootView,添加到系统管理器下,达到系统级弹窗效果,可在其他app上弹出。app\src\main\res\layout下增加custom_pop_layout.xml。定义弹窗的控件资源。
2025-02-02 23:58:58
496
原创 arkui-x 页面封装为自定义组件,巧用controller
这里父组件是一个页面,调用NewSon组件时,传入了this.childRef作为controller。封装的自定义组件NewSon,定义class NewSonController的接口定义,NewSon组件初始化时给refreshData函数接口赋值。这个写法有点像AIDL。而自定义组件不支持onPageShow()接口,只有aboutToAppear()接口,用于组件初始化数据。鸿蒙开发中,有时会需要将某些页面封装为自定义组件,方便复用。所以把页面封装为自定义组件,遇到的最大问题就是数据刷新问题。
2025-02-01 23:55:43
271
原创 鸿蒙开发在onPageShow中数据加载不完整的问题分析与解决
2024-11-08 22:34:06.742 28646-28646 Ace com.example.helloworld I [js_console_log.cpp(94)] ---getDesktopShowCfg: [{"家庭存储" : true}, {"网络录像机" : true}, {"智能助手" : true}]在ArkUI-X中,aboutToAppear()接口是一个重要的生命周期接口,它会在页面即将显示之前被调用。
2025-01-31 22:57:51
1078
原创 arkts bridge使用示例
定义一个bridge的class,里面创建平台桥接实例,就可以实现各种bridge接口。这里实现了一个getThirdAppInfo接口,获取后端第三方应用的信息。参数为两个string,返回一个promise数据。promise也就是JavaScript中用于处理异步操作的一种机制,详细说法这里就不展开了。DevEco Studio工程// 创建平台桥接实例})})
2025-01-30 10:31:33
801
原创 arkui-x跨平台与android java联合开发
华为鸿蒙系统采用的是arkts,支持跨平台crossplatform即前端为arkts,arkui-x框架,后端为其他的语言框架。本篇示例后端采用的是java,android studio工程。主要方式是前端鸿蒙完成界面元素、布局等效果,后面android java提供一些系统数据获取接口、以及多媒体方面的操作接口。这里重点讲一下开发环境、工程构建与发布方法。
2025-01-29 23:18:22
805
原创 手势模组ATK-PAJ7620使用经验
手势模组指的是手势传感器的模块组。手势传感器是一种能够感知人类手势或动作的传感器。它可以捕捉、识别和解释人类的手部动作或姿势,并将其转换成电信号或数字信号,通过识别人体的手势动作来实现与电子设备的交互,如控制电视、医疗设备、游戏机及VR设备等。所以很多应用板都会集成手势模组,以提供多样的用户体验。这里选用了正点原子手势识别模块组ATK-PAJ7620,集成到rk3588板上。
2025-01-28 23:49:19
1336
原创 arkui-x 前端布局编码模板
1、避免设置position等绝对布局组件,通过嵌套的Column和Row组件,以及更多的嵌套叠加,结合padding的效果,统一设置容器四个方向的内边距,可灵活调整组件位置,实现相对布局;3、支持多分辨率,this.getActualHeigh、this.getActualWidth可自动获取不同分辨率下对应的屏幕尺寸,实现自适应布局。2、线性渐变色linearGradient,可在背景图片基础上叠加。如果背景图片相对于线性渐变色是深色,也可能覆盖渐变色的效果;
2025-01-27 23:54:29
439
原创 在win11下搭建ios开发环境
8、xcode最好还是注册一个apple id,注册免费,会员才付费,在apple store里用apple id免费获取xcode最新版本。6、wda无需配置,是作自动化测试的,自动化测试是大型项目才用得着,建议跳过,不要浪费时间在这里。2、vm安装mac,需要先用磁盘工具,抹除虚拟磁盘,也就是格式化,抹除这个说法第一次接触。安装mac虚拟机过程中,也遇到了一些小问题,稍作摸索后,都得以顺畅的解决。1、下载mac的iso,有十几个G,不想等,买了一个月百度网盘会员。安装重启后,分辨率已经自适应了。
2025-01-26 23:55:21
451
原创 ios swift画中画技术尝试
为什么想到画中画,起初是看到后台模式里有一个picture in picture,去了解了后发现这个就是小窗口视频播放,方便用户执行多任务。看小窗口视频的同时,可以作其他的事情。画中画功能在20世纪80年代开始在电视机中应用,使得用户可以在一个屏幕上同时观看两个频道的内容。这个技术在安卓里已经非常普遍了。各种视频内容网站都有类似功能。而苹果支持画中画是在ios14已经开始支持。目前在使用的大多数机型,比如iphone 8p,升级系统后可到ios16.7,都能支持画中画技术。
2025-01-25 14:17:11
1944
2
原创 鸿蒙开发黑科技“stack叠层”替代customdialog
前一段时间遇到的这个问题,通过排除法观察,锁定为customdialog组件有bug,极为容易挂死。不论如何调整使用方法,都还是会触发挂死。反馈给arkui团队,说是在最新版本里解决这个问题,但是最新版本什么时候出来不清楚,而项目开发还要继续。后来甲方工程师提出了一个“stack叠层”方法,讨论下来,才发现我已经在项目中使用过这种方式。
2025-01-24 20:55:40
1174
2
原创 android 获取图标主要颜色作背景色
3、第二多的颜色为白色,如果第一多为黑色,取第三多的颜色,如果第三多的颜色不存在,则对白色和黑色取均值;功能描述:制作一个应用列表,每个元素如下,内圈是应用的图标,外圈大的圆角长方形作为背景。制定几个基本原则,一般白色不作为背景色,其次是黑色也不太会考虑,对于多种颜色在数量上相近的情况(非白黑),取一个平均值。1、统计前三种最多的颜色,因为最极端情况,就是白色、黑色,还有一个其他颜色。4、如果后一种颜色的数量,相比前一种,相差一个数量级以上,则舍去。5、三种最多的颜色,非黑非白,数量相差不多,取平均值。
2025-01-24 10:31:38
477
原创 android模拟点击
这两个写法都使用了new Thread(() -> {}).start()写法,因为不这样,会触发运行崩溃。但是在应用外的界面(当前应用后台运行,在其他应用界面),比如系统设置的界面,出现的是长按的效果。这个写法,因为fetchroot里使用root权限,所以需要系统签名。问题:应用内界面没有问题,能正常触发点击效果。1、使用Instrumentation。2、用adb模拟点击。
2025-01-23 22:20:42
313
原创 iOS swift 后台运行应用尝试失败
最近需要制作一个能够后台长期运行的移动应用。该应用需要调用摄像头周期性捕获数据,然后对数据处理过后,实时反馈结果。支持android和ios平台。主要有下面几点:1、摄像头实时捕获2、能够适配多款不同机型的处理算法3、能在后台以服务形式常驻运行,不影响用户使用其他应用4、根据数据处理结果,给用户提醒,通常用户这时在使用其他应用在安卓平台上,已经通过多款不同型号的手机,验证了方案与算法,包括用户易用性方面也进行了一些界面设计与调整。那么接下来,理论上,ios采用一样的方案,就能够实现。
2025-01-22 15:59:27
962
原创 【harmony编程】触摸板实现手势滚动
首先,滚动组件通用属性和事件目前只支持和组件。我的程序选用了List组件,要在单板接鼠标后实现滚动效果。
2025-01-21 23:27:37
971
原创 ios打包:uuid与udid
新人开发ios,发现uuid和udid在网上有很多帖子里是混淆的,比如百度下,就会说:在iOS中使用UUID(通用唯一识别码)作为永久签名,通常是指生成一个唯一标识,用于标识应用的用户或设备。这种签名方式不涉及到真正的签名验证过程,更多用于标识用户或设备的唯一性。还会像模像样的给出一堆swift代码,来获取uuid还有这样的回答:在iOS开发中,UUID(Universally Unique Identifier)主要用于识别设备,特别是在推送通知服务中。
2025-01-21 22:01:44
1011
2
原创 arkui-x LongPressGesture重入问题
如果要通过长按触发弹窗,这个重复就不需要了。如果重复多次触发弹窗,可能会出现无法预期的结果。这样的效果就是,长按元素到一定时间就会触发,即使一直按着不放也会触发,符合以往的用户习惯。只需要把repeat改为false就可以了。这是使用长按的repeat能力进行计数。
2024-11-10 14:40:38
183
原创 arkui-x开发中遇到的各种奇怪focus问题
测试发现,删除触发弹窗的原始元素,主页面处于失去焦点状态,会自动找一个前面的元素设置焦点,这个元素的选择感觉是随机的。则会同时出现两个元素有焦点。系统的默认行为也无法取消,可能是删除数据,通过@State引发@Builder重新渲染,渲染过程中,系统自动选择了一个历史元素,设置了焦点。解决方法,不使用onFocus、onBlur,改为使用onHover,即鼠标悬停状态下,自动设置focus标识,上面问题就会好很多。另一个奇怪问题,当页面有多个元素时,需要给每个元素一个focus标识,用bool变量记录。
2024-11-07 11:11:47
347
原创 android后台截屏踩坑记录
检查manifest文件,发现在作其他需求时,在application下已经加了android:sharedUserId="android.uid.system",怀疑有冲突,删除application下语句。上网查询android11的SurfaceControl.screenshot的参数,介绍都是4个参数或五个参数,与新方法一致。1)坑1:帖子上的旧方法反射和直接调用,新方法直接调用都不行,猜测是android版本不同。多次测试,相同分辨率下,截屏时间在500ms-600ms。命令来截屏,性能不行。
2024-10-18 23:24:40
716
原创 对所见即可说方案进一步调研
基于上一篇的调研果,因为flutter混合开发的应用是很多的,如果辅助服务只能捕捉到原生android页面,无法捕捉到flutter页面,方案就不可行。此外对于arkui-x页面,也出现了辅助服务无法抓词的问题。客户认为需要进一步摸索更多的方法。
2024-10-15 00:34:51
619
原创 在原生apk中监听flutter apk的无障碍事件(调研)
背景:在已写好的android java应用中,已经实现了无障碍服务,在无障碍api接口onAccessibilityEvent里能正常监听到系统里其他原生应用的AccessibilityEvent。需求:flutter最新版本已支持无障碍功能,在不修改原生apk代码的情况下,应当能监听到flutter apk里的无障碍事件,并抓取页面上对用的文本内容,需要验证确认下。Flutter 的无障碍功能主要是通过 Semantics 小部件和相关的 API 来实现的,而不是通过直接监听无障碍事件。
2024-10-05 21:55:01
1098
2
原创 android stuido做一个flutter的apk
注意创建一个新的flutter项目,可能用到的gradle是另一个版本,如果不翻墙,需要提前下载好,解压放到目录.gradle\wrapper\dists\gradle-xxx-xxx\<某个序列码,比如gradle-8.3-all对应的是6en3ugtfdg5xnpx44z4qbwgas>\下。Flutter assets下载,实测第一次耗时1小时13分钟。有了配置java和gradle的经验,就很简单。工程目录下输入flutter build apk。
2024-10-01 07:49:48
330
原创 打通“科大讯飞插件asr”到“辅助点击功能”的流程
现在的设计是main activity创建时启动了asr的语音服务VoiceRecognitionService和辅助服务AccessibilityVoiceCtrlService,前者会监控语音输入,转换为热词,后者会监控界面,实时获取所有view节点的文本。一般用法是客户端给服务端发消息,而这里需要AIDL服务端VoiceRecognitionService主动给客户端AccessibilityVoiceCtrlService发消息,可以用AIDL Callback来实现。
2024-09-28 23:26:27
673
原创 android无障碍服务debug启动问题
—启动一个服务,KeyLisService是派生accessibiliyService的一个子类。方式:通过Settings.Secure.putString。——表示一个窗口(Window)对象被销毁了。方式:跳转到设置页面去手动开启无障碍服务。下面代码可以打开系统的无障碍功能列表。——另一个新加的无障碍模式没有启动。bug暂时没有遇到。
2024-09-26 21:49:12
473
原创 AccessibilityService可见即可说方案对比
AccessibilityService也叫andriod辅助服务。这个服务提供了增强的用户界面,目的是为了帮助残障人士。它一般提供了页面元素查找功能和元素点击功能。使用科大讯飞asr语音能力,实现语音控制点击界面。
2024-09-25 23:33:42
975
原创 app:compileDebugJavaWithJavac红色乱码告警的遗留问题
android studio 编译时在build输出里看到的告警,编译结果是成功的搜索百度,有三个说法1、源代码文件的编码格式(如UTF-8),设置后没有变化2、 mipmap-mdpi文件夹中的图片,复制一份到 mipmap-hdpi 文件夹,或者复制到每一个 mipmap-xxxxxxxxx 文件夹里面就可以解决这个问题的。试了后也没有效果,可能是因为我的本地项目并没有对应mipmap文件夹adb获取手机像素密度: adb shell wm density。
2024-09-25 13:57:55
634
原创 arkui-x的前端界面布局问题
在devEco里右侧边栏,里面的预览器,可以用来直接看pages页面,选择edit profile manager,new profile创建一个新的,width 720,height 1280,DPI 480(这些配置根据实际app参数来设定)。创建完成,应用新profile后,旋转为横屏的效果,即是代码开发出来的效果。建议改为2.0.0.37版本,37的布局bug是进入app第一次初始布局存在问题,可以规避,通过点击下侧方块,再点回app可以消除。在外网只能下载到27版本,27版本存在另外问题。
2024-09-24 17:19:17
386
原创 MutableLiveData用法
LiveData是Android架构组件的一部分,它是一个可观察的数据存储器,用于UI相关的数据。LiveData是只读的,而MutableLiveData可用来修改数据。MutableLiveData定义了postValue和setValue用来通知观察者更新数据。postValue为异步操作。setValue为同步操作。允许从非 UI 线程更新这些值,比如 从协程中更新。热词命中(asr是科大讯飞语音插件)
2024-09-24 09:22:34
320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人