自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

龚礼鹏的博客

有所学习,有所思考,有所总结,一起进步

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

原创 Android 13 骁龙相机点击拍照流程分析(二)——点击拍照到存入相册

Android 13 骁龙相机点击拍照流程分析(一)——点击拍照到更新到左下角缩略图-CSDN博客。

2023-10-09 16:39:42 1320

原创 001 Android13将Settings移植到AndroidStudio中(一)

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

2023-05-24 16:12:39 1663 5

原创 一篇文章彻底理解自定义View

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

2022-12-02 17:37:45 1467

原创 flutter_easyrefresh 加载多次问题修复

flutter_easyrefresh是一个下拉刷新上拉加载的插件,具体我就不介绍了,这里主要是解决flutter_easyrefresh的bug,主要我在用此插件的时候遇到如下两个问题:①.上拉加载最后的footer不消失②.加载少量数据出现多次加载现象解决方案第一个问题现象如下,就是加载过程中在数据不能占满整个界面的时候footer是不会自动消失的解决方案:加载完成延时一...

2020-04-17 01:32:06 5387 6

原创 鸿蒙应用开发将Promise的多个异步处理改成同步处理,解决回调地狱问题

其实在实践过程中大家会发现鸿蒙中的很多api都是异步的,我们如果用异步开发的步骤需要在回调中进行处理,如果有多个异步操作就会嵌套多层,这样看起来代码很紊乱。如果是在for循环中添加多个异步操作,则数据会造成紊乱,因为是异步操作for循环不会等待异步操作完成再进行下一个循环,他会立即进入循环,所以就会出现数据紊乱。

2024-06-18 09:47:43 130

原创 OpenHarmony及鸿蒙应用的屏幕亮度获取以及设置

对应的OpenHarmony版本:V3.2查找资料发现V3.2版本的OpenHarmony没有获屏幕亮度的接口,只有设置屏幕亮度的接口,这个就很奇怪,所以我最终的方案是获取屏幕亮度使用老的接口,设置屏幕亮度使用新的接口,这样就完成了这个需求。

2024-05-31 10:58:33 202

原创 OpenHarmony以及HarmonyOS应用监听亮屏息屏

表示设备屏幕关闭且设备处于睡眠状态的普通事件的动作。表示设备屏幕打开且设备处于交互状态的公共事件的操作。

2024-05-30 19:51:38 61

原创 OpenHarmony应用开启Service以及完成自启动和常驻

由于有需求实现一个后台常驻服务,这里就是来实现在鸿蒙里面如何实现后台服务并且实现自启动和常驻。

2024-05-28 20:12:47 686

原创 OpenHarmony应用在DevEco Studio配置默认密钥为123456的签名如何进行一键签名,运行起来

可以看出上面的要求纯数字是不行的,但是按照上面的签名方式步骤又很复杂,所以我还是喜欢一步到位的操作,目前来看官方的方式肯定不行了,需要另辟蹊径,思路是1.完成自动化签名操作 2.将自动化签名操作放到DevEco Studio中。最后两个 属性是未签名的hap路径以及签名过后的路径,签名输出的路径最好就是和DevEco Studio的一致,这样好进行后续的DevEco Studio配置。注意路径都是绝对路径,我这边尝试相对路径是报错的,我这边对应的文件如下,如果有不明白的需要参考。然后在Name中添加名称。

2024-05-28 19:41:07 252

原创 应用中添加ServiceExtensionAbility然后安装HAP时提示“code:9568344 error: install parse profile prop check error”错误

该问题可能是由于应用使用了应用特权,但应用的签名文件发生变化后未将新的签名指纹重新配置到设备的特权管控白名单文件install_list_capability.json中,请通过如下步骤进行解决。在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install parse profile prop check error”错误信息。去掉冒号后的签名指纹为:5753DDBC1A8EF88A62058A9FC4B6AFAFC1C5D8D1A1B86FB3532739B625F8F3DB。

2024-05-27 16:47:11 183

原创 息屏休眠功耗超标问题排查流程及解决方案

日志中可以看出来红框的部分是第一次NetworkTimeUpdateService类到NtpTrustedTime类中进行的时间同步完成流程,可以看出耗时了40s,然后再看蓝框的部分是第二次时间同步,可以看出由于第一次时间同步未完成,然后还在锁住状态,所以sychronized。这个日志可以看出前面的唤醒锁很多,到后面逐渐变少直到最后没有了,这些锁就是导致当前不能休眠的原因,分别从最前面的size=5开始查看。上述修改是生效的,但是不一定正确,一般是把分析结果呈现出来,尽量不修改。

2024-05-17 17:07:23 54

原创 wireshark工具的安装和使用

任何捕获的数据包都有它自己的层次结构,Wireshark 会自动解析这些数据包,将数据包的层次结构显示出来,供用户进行分析。默认情况下,Wireshark 会捕获指定接口上的所有数据,并全部显示,这样会导致在分析这些数据包时,很难找到想要分析的那部分数据包。例如,要从捕获到的所有数据包中,过滤出 DNS 协议的数据包,这里使用 dns 显示过滤器,过滤结果如图所示。显示过滤器是基于协议、应用程序、字段名或特有值的过滤器,可以帮助用户在众多的数据包中快速地查找数据包,可以大大减少查找数据包时所需的时间。

2024-05-08 19:44:18 653

原创 Android Telephony架构讲解

采用了分层结构的设计,共跨越了三层:应用层、应用框架层和系统运行库层,与Android操作系统整体分层结构保持一致,从上到下共分三层:Telephony应用、Telephony框架、,无线通信接口层,主要位于系统运行库层的HAL中)。学习过程中一般选取一个模块,从上往下看,比如打电话,从Dialer到Telephony到RIL(RILJRILDRILC),再比如SMS,数据拨号,这样梳理两三个流程,就会豁然开朗。

2024-05-08 19:31:58 935

原创 Android 11 12 13耳机图标不显示问题解决方案以及整个图标显示流程

【代码】Android 11 12 13耳机图标不显示问题解决方案。

2024-04-30 10:05:16 473 1

原创 OpenHarmony与HarmonyOS应用出不同环境的包以及在代码中获取不同包的标识

官网中没有具体说明该怎么在代码中获取到不同的版本,但是可以看到根据不同的target可以加载不同的资源,所以我们的思路是根据不同的版本加载不同的资源,我们可以把版本名称放到资源文件中,这样不同的版本在代码中获取的版本名称就是不一样的。在原先的基础上新建多个资源文件夹(这个和你需要出的版本对应的),如下是我需要新建两个版本的资源文件夹,然后在资源文件夹中添加字符串进行区分,我这里是写的target_name。这就是我们平时的获取资源文件的value一样的,如下是获取target_name的value。

2024-04-23 16:48:26 176

原创 OpenHarmony及HarmonyOS应用中如何封装so包

其实鸿蒙应用的封装so包和android是一致的,都是在cmake中进行操作。

2024-04-23 16:17:08 91 2

原创 Android 14模块测试随机断电开关机压力后出现应用停止运行,报错:Apps may not schedule more than 150 distinct jobs

下一步找出这个任务id,根据最上面的日志找到CallLogConfigImpl类中的schedulePollingJob方法。然后在JobSchedulerService添加相关的打印信息进行压力测试,主要是看哪个任务id被启动了很多次。任务id为400的这个任务启动了很多次,都到了256个了,早早超过了150,所以会崩溃。为了防止这个任务的多次启动,我们可以在任务启动后不在继续添加新的任务。这个任务id就是400,所以和前面日志中看到的相吻合。最终是防止多次任务启动,如下。

2024-04-17 10:28:23 183

原创 openharmony 编译源码及docker相关操作

编译完成后生成pac包路径:out/uis7885/packages/phone/images/uis7885_nosec_userdebug.pac。user版本: ./build.sh --product-name uis7885 --ccache --build-variant user。打包脚本路径:device/board/sprd/uis7885/pac/ImageFiles/flash.cfg。编译完成后生成镜像路径:out/uis7885/packages/phone/images。

2024-04-17 09:44:28 126

原创 HarmonyOS以及OpenHarmony清除分区数据方法

hdc shell。

2024-04-09 14:00:53 61

原创 鸿蒙&OpenHarmony Usb相关事件监听

USB子系统面向应用发布如下系统公共事件,应用如需订阅系统公共事件,请参考公共事件接口文档。

2024-03-26 16:44:52 149

原创 鸿蒙实现沉浸式全屏模式

如上是鸿蒙开发中实现沉浸式的两种方式,当然也可以分别隐藏导航栏或者状态栏。

2024-03-26 16:37:07 421

原创 鸿蒙将资源文件转成字符串

通过如下代码:

2024-03-26 16:28:54 141

原创 Android应用Java开发规范

【推荐】循环体中的语句要考量性能,以下操作尽量移至循环体外处理,如定义对象、变量、获取数据 库连接,进行不必要的 try-catch 操作(这个 try-catch 是否可以移至循环体外),if else等。【不推荐】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方 式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。.【强制】判断所有集合内部的元素是否为空,使用 isEmpty() 方法,而不是 size() == 0 的方式。

2024-03-14 16:29:19 905

原创 鸿蒙应用native开发入门以及运行native项目报错spawn EPERM问题解决以及so包调用

然后点击Next,编辑好项目相关配置及信息,然后点击finish即可。禁用了,所以出现此错误,网上搜索没有一点线索!此处的报错是公司电脑限制导致的,由于。会出现如下打印,说明我们的这个。这样我们第一个鸿蒙应用调用。文件,让其将前面步骤的。点击运行成功后会出现。

2024-03-05 20:30:31 384

原创 Android 14 设置锁屏为NONE后开启双卡PIN锁,重启设备后,输完卡1的PIN码就进入了安卓界面,未提示输入卡2的PIN码

可以看出来当前的securityMode 不是SecurityMode.None但是mLockPatternUtils.isLockScreenDisabled(KeyguardUpdateMonitor.getCurrentUser())为true,所以会设置当前的finish为true。当finish为true会调用到callback的finish中,此方法就是会关闭当前的PIN码输入的窗口。然后当当前的sim卡准备好了并且在当前的锁为无锁状态下关闭当前锁屏界面。如上就完成了对此bug的修复。

2024-03-05 13:45:00 290

原创 DevEco Studio编译不了native项目

此问题在网上找不到任何资料,我这边原因是公司电脑做了限制,让我cmake运行不了,导致报错。

2024-02-27 15:48:35 88

原创 Android 14源码单编卡在analyzing Android.bp中

Android14源码编译会卡住问题是内存占用太多了,需要64G内存,如果内存不够就会卡住很久,使用make单编也是同样卡住很久。这个也不会卡住,不过只能在单编中使用,整编不可行。解决方法一:内存条加到64G。这样单编整编都会很顺畅。

2024-02-20 11:37:46 327 2

原创 APN设置流程分析

2、进行delete操作时,TelephonyProvider通过URL_RESTOREAPN进行删除操作,会删除carriers表,同时删除首选APN,获取preferred-full-apn的SP,如果SP包含version1,表示apn已经存储起来了,删除该subId对应的version1字段以及APN唯一字段与subId组合在一起的字段,删除完成,重新初始化加载carrier表,然后我们分析APN的主要流程:重置APN流程、切换APN、新建APN、编辑APN。

2024-02-05 20:08:53 83

原创 网络选择流程分析(首选网络类型切换流程)

对应的入口源码位置在Settings的UniEnabledNetworkModePreferenceController中,当然其他平台可能在PreferredNetworkModePreferenceController中,流程上都是大同小异。然后点击切换按钮会调用到UniEnabledNetworkModePreferenceController的onPreferenceChange方法。中发送指令,至此从应用层到framework层到Modem层的流程就完成了。此方法中主要看圈出来的三个方法。

2024-02-05 16:00:28 565

原创 OpenHarmony隐藏应用(应用不在桌面显示,隐藏应用图标)

注意:此种方式是在OpenHarmony系统中生效。

2024-01-29 15:43:24 271

原创 OpenHarmony以及HarmonyOS封装接口提供SDK(har包)以及代码混淆

配置完环境变量需要点击一下如下的init.bat。如上两个环境变量需要加到系统变量的path中。然后应该就可以正常执行ohpm相关指令了。指令执行成功就可以在应用中调用了。

2024-01-26 11:46:36 241

原创 Compose Text中防止内容过多顶出去

里面的参数可以输入最小宽度和最大宽度,我们限制下最大宽度就可以防止顶出去。

2024-01-06 21:13:36 517

原创 OpenHarmony 快速集成轻量级存储(dataPreferences)工具类

OpenHarmony中也有类似于Android的SharedPreferences的轻量级存储,名字叫dataPreferences,这里省略介绍,直接放工具类。调用getPreferencesData方法获取值,第一个参数是key,第二个参数是value的回调。将上述的initPreferenceData方法在onWindowStageCreate中进行调用。调用putPreferencesData方法存入键值对,第一个是key,第二个是value。二.然后新建工具类拷贝如下代码。

2023-12-29 15:06:43 553

原创 OpenHarmony 应用通用签名

本次内容主要是OpenHarmony的手动签名。

2023-12-29 10:53:55 1149

原创 openHarmony添加system_basic权限安装报错

3.修改apl字段为system_basic或者在allowed-acls中加入需要申请的权限,如下是方便演示我将两处都修改了。2.然后找到对应的openHarmony 的SDK路径,如下记得要切换成OpenHarmony。5.然后进行自动签名,注意此处不要勾选Support HarmonyOS,只要勾选后面那个选项。openHarmony添加system_basic权限安装报错。1.首先查看当前的api level。签名完成就可以安装了。

2023-12-14 14:16:37 1003

原创 Android 13 Settings蓝牙列表卡顿问题排查及优化过程

此时我们的卡顿优化基本完成了,我们应该要考虑内存是否会泄漏,如果大家不知道哪些需要回收可以用leakcanary和android profiler进行内存检测,看代码有没有内存泄漏。

2023-12-07 17:06:45 1338 3

原创 Android 13 骁龙相机点击录像流程分析

录像的流程大概分为几个阶段:进行预览、点击开始录像(跳过)、点击按钮结束录像、数据库保存生成uri、根据uri保存左下角缩略图、将uri保存内存中、点击左下角进入相册,下面我们一步一步进行分析。

2023-10-11 15:11:38 829

原创 Android 13 骁龙相机点击拍照流程分析(一)——点击拍照到更新到左下角缩略图

拍照的流程大概分为几个阶段:打开相机进行预览、点击按钮进行拍照、生成缩略图、生成图片并保存、数据库保存生成uri、点击左下角进入相册,下面我们一步一步进行分析。

2023-10-09 14:53:39 1485

原创 android跳转到Settings中各个界面的方式

【代码】android跳转到Settings中各个界面的方式。

2023-09-13 22:11:26 1786

原创 Ubuntu 常用命令

在当前目录中寻找名字为filename的文件。grep "无障碍" ./ -rin。打开android studio。

2023-08-29 19:08:07 107

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

2023-12-07

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

2023-12-07

Android 13 Launcher界面-移除桌面的删除和卸载功能

Android 13 Launcher界面-移除桌面的删除和卸载功能

2023-08-08

TextField演示效果

TextField演示效果

2023-07-14

framework.jar

framework.jar

2023-05-30

空空如也

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

TA关注的人

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