- 博客(316)
- 收藏
- 关注

原创 Android 13 骁龙相机点击拍照流程分析(二)——点击拍照到存入相册
Android 13 骁龙相机点击拍照流程分析(一)——点击拍照到更新到左下角缩略图-优快云博客。
2023-10-09 16:39:42
1495

原创 OpenHarmony与HarmonyOS联系与区别
HarmonyOS 是华为是基于 OpenHarmony、AOSP等开源项目开发的面向多种全场景智能设备的商用版本,所以HarmonyOS包含OpenHarmony,如果将OpenHarmony理解成地基,则HarmonyOS则是在这个地基基础上修建的精装房。开篇就说“关于‘鸿蒙操作系统’,由于缺乏规范的表述和统一的口径,导致内部理解不一致、对外说法不一致,容易引起混淆,所以此篇是专门说一下OpenHarmony与HarmonyOS的区别的。当我们在说“鸿蒙”的时候,也许就是指鸿蒙生态。
2023-07-21 16:04:54
16168
6

原创 001 Android13将Settings移植到AndroidStudio中(一)
首先环境,最好用我上面的AndroidStudio版本及gradle配置将代码整编得到out产物如下图内容复制到AndroidStudio的Settings对应目录下面复制后对应的Settings项目中如下:注意values可以按照需要保存相应的文件夹,我这边是只保留默认的values和中文的values的其实这些步骤也可以放到最后将所有模块导入差不多了在做Settings模块,不然会有很多报错,这里我暂时不说Settings的gradle配置的了,这些都放到最后来说。
2023-05-24 16:12:39
2167
7

原创 一篇文章彻底理解自定义View
对应标签。容易引起oom继承系统的TextView,实现在文字中间加一条横线}}}}) {canvas?}}可以看见文字中间是有一条横线的①.简单实现一个矩形的绘制}}}}) {canvas?}}添加自定义属性,添加自定义背景色先在values目录下面创建attrs.xml,添加自定义属性然后在代码中获取自定义属性,注意获取的资源要回收}//获取自定义属性对应的组名称//获取自定义属性//注意资源需要回收}}}
2022-12-02 17:37:45
1606

原创 flutter_easyrefresh 加载多次问题修复
flutter_easyrefresh是一个下拉刷新上拉加载的插件,具体我就不介绍了,这里主要是解决flutter_easyrefresh的bug,主要我在用此插件的时候遇到如下两个问题:①.上拉加载最后的footer不消失②.加载少量数据出现多次加载现象解决方案第一个问题现象如下,就是加载过程中在数据不能占满整个界面的时候footer是不会自动消失的解决方案:加载完成延时一...
2020-04-17 01:32:06
5537
6
原创 OpenHarmony 5.0 拨号键盘自定义暗码启动其他应用
有一个需求,需要自己写一个隐藏的应用,然后又不能让客户看到,需要在拨号盘输入特定的暗码进入此应用。上述就是截取*#*#到#*#*中间的数字,然后如下是对数字进行处理。处理module.json5文件,修改skills中的数数组。然后如果符合当前的暗码进行处理。constacts中。
2025-03-13 19:59:45
81
原创 OpenHarmony项目的应用在DevEco Studio配置项目中固定的一键签名
由于手动签名需要在DevEco Studio中将应用先编译出未签名的包,然后在手动签名这个未签名出来的包,步骤比较繁琐,所以考虑直接在DevEco Studio中配置签名可以进行一键安装。如上配置完成就可以一键安装了,并且和自动签名相比签名不会变化,后续可以将代码上传,其他小伙伴无需任何配置,直接可以一键安装了。上述可以看出来有四个步骤,然后第二步生成的 certChain 步骤中后缀名改成.cer。上面步骤会生成fctTest.cer 签名文件。
2025-03-13 17:06:16
163
原创 鸿蒙(openharmony) 5.0 光感接口崩溃
【代码】鸿蒙(openharmony) 5.0 光感接口崩溃。返回的值是undefined
2025-02-13 19:28:57
75
1
原创 鸿蒙面试题
该工具可以监测性能、功耗相关指标,包括FPS、CPU、GPU、RAM、Temp等,通过量化的指标项了解应用、整机性能状况。随机测试是指随机测试界面内容,支持的能力包括:shell启动、拉起整机应用、多种注入方式、设置随机种子、打印运行日志和生成报告。HSP(Harmony Shared Package)是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现代码和资源的共享。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry和feature。
2025-02-13 16:59:17
807
原创 oh5.0调用soundPool.play接口报错5400102
应用层由于加载音频流程没走完,所以就是播放音频的时候需要延时一下,就是把上面的setTimeout给放开就行了,不过不推荐这种修改,如果无法修改Framework源码,那只能这样修改。上述的方法调用在创建音频池和加载音频中都成功了,但是最后播放音频报错了,错误码为5400102,这个错误码的意思是不能被允许的。其实就是加载音频的流程没有完成就调用了播放音频的方法,所以有两个解决方案。
2025-02-10 19:17:51
283
原创 OH 5.0中设置full sdk
首先在DevEco Studio Next版本里面没有设置HarmonyOS的sdk位置,都是默认设置的public sdk,然后我们需要将HarmonyOS设置改成OpenHarmony设置,并且将full sdk放在对应OpenHarmony sdk的位置上,让其可以使用full sdk。其他位置的runtimeOS也改成OpenHarmony即可。然后我们就可以正确的使用full sdk了。
2025-02-06 10:55:58
185
原创 Oh3.2项目升级到Oh5.0(鸿蒙Next)具体踩坑记录二
然后继续记录踩坑,如下开始是代码中报错,主要是3.2中的一些api在5.0中不支持,所以要进行修改。
2025-02-05 19:44:52
150
原创 Oh3.2项目升级到Oh5.0(鸿蒙Next)具体踩坑记录(一)
我们将3.2的项目放在5.0的sdk以及deveco studio next上面的运行结果首先是报错如下:这里我们直接点击Migrate Assistant让他自动修复然后会让你选择当前版本,如果是5.0就选择5.0,如果是5.1就选择5.1,如下:点击migrate,我这里已经点击过了然后会继续报错如下:这里我们继续点击Auto-fix 让其自动修复。
2025-02-05 13:22:12
496
原创 Android 13 电池电量以及通知控制指示灯逻辑源码流程分析
BatteryService:电池服务,根据电池相关逻辑调用了灯控制相关逻辑config.xml:灯闪烁频率以及灯的颜色控制NotificationManagerService:通知管理服务,根据是否有通知以及通知的类别控制相关led灯的闪烁LightsService:灯相关的服务,内部类LightImpl调用灯控制流程,用于其他服务调用灯控制统一管理lights.cpp:灯控制的native层最终实现,调用节点控制灯逻辑。
2025-01-27 16:33:38
125
原创 Android 12 vpn 连接流程
ConfigDialogFragment:Vpn配置相关的弹窗界面。AppManagementFragment:Vpn连接的弹窗界面。VpnSettings:显示Vpn界面的。
2025-01-16 20:23:55
194
原创 Android 13 14 vpn中怎么实现pptp和l2tp模式
上面的日志其实已经说明我们客户端的Vpn已经和服务端连接成功了,但是pppd进程和Vpn进程状态没有同步,pppd进程其实已经告诉我们成功连接了,Vpn进程应该是读取超时,然后得到的是Vpn连接失败的状态,这点也可以从Vpn的打印日志和pppd的打印日志相差40s中看出来。可以看出来android 12中指定了路径,android 13中没有指定路径,所以执行脚本的地方就找不到这个脚本,然后我们把android 12的mk文件拷贝过来就行了,这样整个流程就通了。
2025-01-16 17:21:20
1704
原创 Caused by: java.lang.NullPointerException: Attempt to get length of null array
由于是客户的后台系统监控到crash报错,所以可能存在日志不全的情况下,然后日志不全一般我们都不会继续排查了,其实日志不全也可以继续排查的,错误日志如下:关键点:Caused by: java.lang.NullPointerException: Attempt to get length of null arrayat com.android.quickstep.GestureState.(Unknown Source:0)
2025-01-08 10:49:21
90
原创 刷入super镜像报错 FAILED (remote: ‘Error: Last flash failed : Volume Full‘)
可以看出来第二次刷入的底包super的大小为2203648,第一次刷入的底包super的大小为1900544,然后我们在看下分区提交记录那笔的diff。可以看出来时间点是在12月17号有提交,但是我们上述刷入的底包时间是11月27号,说明那个底包是在这笔提交之前的,所以前后分区大小不一致。由于是底包的分区大小和源码中的super镜像分区大小不一致导致的,我们就搜索下这个项目最近有没有一些分区的调整,直接搜索“分区”查看下。可以看见是有12月19号的底包的,然后我们先刷入这个底包,在刷入镜像尝试。
2025-01-02 20:06:49
500
原创 android 外挂modem模块实现Telephony相关功能(上网,发短信,打电话)
android 外挂modem模块实现Telephony相关功能(上网,发短信,打电话)
2025-01-01 21:36:24
503
原创 鸿蒙 log抓取
一般场景我们可以通过DevEco Studio来抓取日志,但是现在有一个这个场景,设备在出问题期间是连接不上电脑的,无法抓取实时日志,这时候我们就需要让设备在本地抓取日志。则需要重新启动设备就可以开启日志抓取了。如下是指令执行成功后的效果。然后就开始抓取日志了。
2024-12-24 14:27:27
470
原创 OpenHarmony 3.2 调用获取指定网络接口信息报错,DHCP报错:callback error 29189
查看日志可以看出来在29189附近有crash,是netmanager出现了crash,而我们这个就是和网络有关的,所以怀疑是这个netmanager crash导致功能不正常,然后我们继续排查crash日志,如下。客户在设置里面调用这个接口,获取以太网信息,问题是刚连上网点击设置中的以太网会提示报错,并且不可恢复,需要关机重启才能恢复。这样客户调用此接口就不会一直报错,只有在网卡没有初始化好,ip地址没有获取到之前可能会有报错,ip地址获取成功后就不会报错了。添加判空并返回错误码即可。
2024-12-23 20:15:45
225
原创 OpenHarmony 3.2 网卡获取ip地址缓慢分析
然后其实就是调用到CheckReadBytes函数和CheckPacketIpSum函数,再看下CheckPacketIpSum函数的内容,可以对比下如上日志,这个500ms的耗时就是这么来的。另外,在DHCP client进程收发包时,由于设备是没有IP地址的,因此在通过socket收包时要使用raw socket来接收报文。现在就是最后一步,等待服务端响应,从前面的梳理可以看出来基本和前面的响应是差不多流程的,然后就是在响应的类型不一样,是Ack,看一下如下日志。考虑下这里进程睡眠500ms的影响?
2024-12-21 21:21:26
155
原创 OpenHarmony中HDC相关操作源码
目前所知道的路径就是在/developtools/hdc/src/daemon/daemon_unity.cpp中进行指令的执行。本次主要记录OpenHarmony中的HDC相关操作的源码位置,为后续有hdc相关修改可以进行快速的查询。也可能在具体的函数中,比如之前说的切换usb连接还是切换ip连接的就是在 SetDeviceRunMode方法中。首先找到hdc相关的代码逻辑模块位置,路径:xxx\developtools\hdc。如果想干掉hdc的所有功能,就是如下的patch。
2024-12-05 19:32:10
109
原创 鸿蒙应用获取wifi连接的ip地址(官方文档获取的格式转换成192.168.1.xxx格式)
本次来学习如何获取到鸿蒙设备连接wifi后的ip地址,由于官网文档中获取的ip地址和我们平时看到的192:168:xxx:xxx有所不同,需要进行下转换,所以记录下,如下的流程是在OpenHarmony 3.2 Release版本进行开发测试的。获取 macAddress 还需申请ohos.permission.GET_WIFI_LOCAL_MAC权限,无该权限时,macAddress 返回空字符串。所以这个格式和我们看到的192.168.xxx.xxx是不符合的,所以需要进行转换。
2024-12-05 14:40:40
454
原创 OpenHarmony修改hdc默认为局域网连接模式
当前是基于OpenHarmony 3.2的版本做的定制,然后由于当前版本后续会干掉usb连接,需要将hdc从默认的usb连接模式修改成局域网连接模式。
2024-12-05 11:19:38
259
原创 OpenHarmony源码中添加预置应用
有一个这样的需求,需要将我们自己的测试工具hap包集成到OpenHarmony系统中,在刷机的时候就可以像系统应用一样是系统自带的应用,所以下面我们就来介绍如何将应用集成到系统中。将编译好的hap包放到xxx\applications\standard\hap路径下,如下就是我们将测试工具Fct.hap放到路径下面。vendor/xxx/xxx/preinstall-config/install_list.json添加代码,配置其可以安装。代码如下:其中xxx.xxx.xxx是包名。
2024-12-05 09:59:07
339
原创 鸿蒙应用如何进行文件下载(官方文档13499999错误解决方案)
为何记录鸿蒙应用下载文件的流程,主要是因为官网的文档有坑,写的有问题,我是在3.2版本的进行开发的,如下是3.2的OpenHarmony关于文件上传和下载方面的文档,其实上传我没有尝试,但是应该是同一个问题。最后就是调用如上的downloadTest方法,其中progresCallback中是显示进度的,如下就是正在下载中。然后下载完成会在应用的包名下面找到,由于有沙箱机制,所以代码中的路径和实际路径是有差异的,如下就是下载后的文件。如下是完整代码,其中下载地址我也写上去了,目前还能用,可以直接测试。
2024-11-28 20:00:53
214
原创 鸿蒙开发与Android开发对比
前期主推JavaScript Framework(JSF)进行UI和业务逻辑开发,同时也支持Java和Kotlin,当前的纯血鸿蒙开发只能使用ArkTs语言进行开发。总结,鸿蒙和Android在开发体验、生态系统和目标市场等方面存在显著差异,开发者在选择时需考虑这些因素以及各自的项目需求。Java和Kotlin是主要的开发语言,Java曾是传统选择,Kotlin现在被广泛推荐并成为首选。具有庞大的开发者社区和丰富的应用市场,Google Play商店提供大量应用。
2024-10-28 15:03:04
570
原创 android SELinux权限适配
添加权限(sepolicy 1),然后编译,刷机,重新验证。这时候又遇到(sepolicy 2)的权限策略,又需要进行添加权限的设置。如果程序需要多个权限,就需要反复进行设置权限。对于将selinux设置为permission mode,分二种方法:1,执行setenforce 0命令即可。2,修改init代码,在初始化的时候设置为permission mode,不同版本方式不一样。遇到neverallow问题需要自定义权限域,如下是添加到vendor_sysfs_usb_supply权限域中。
2024-09-29 16:11:25
1067
原创 Android 13 固定systemUI的状态栏为黑底白字,不能被系统应用或者三方应用修改
在colors.xml编写自定义的状态栏背景色以及状态栏内容的颜色,然后后续所有的位置都是用这两个自定义的颜色进行填充,这样的好处是后续我们想改变状态栏背景色或者状态栏的内容颜色直接改变这两个颜色值即可。
2024-09-12 19:47:22
628
原创 Framework源码整编、单编、烧录过程
源码编译分为整编和单编,整编通常耗时较长,单编则速度很多,如果我们进行一个小的修改想要立马验证的话单编就很合适。
2024-08-01 19:03:13
359
1
原创 鸿蒙应用开发将Promise的多个异步处理改成同步处理,解决回调地狱问题
其实在实践过程中大家会发现鸿蒙中的很多api都是异步的,我们如果用异步开发的步骤需要在回调中进行处理,如果有多个异步操作就会嵌套多层,这样看起来代码很紊乱。如果是在for循环中添加多个异步操作,则数据会造成紊乱,因为是异步操作for循环不会等待异步操作完成再进行下一个循环,他会立即进入循环,所以就会出现数据紊乱。
2024-06-18 09:47:43
632
原创 OpenHarmony及鸿蒙应用的屏幕亮度获取以及设置
对应的OpenHarmony版本:V3.2查找资料发现V3.2版本的OpenHarmony没有获屏幕亮度的接口,只有设置屏幕亮度的接口,这个就很奇怪,所以我最终的方案是获取屏幕亮度使用老的接口,设置屏幕亮度使用新的接口,这样就完成了这个需求。
2024-05-31 10:58:33
522
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人