- 博客(57)
- 收藏
- 关注
原创 Android 12 - 部分相机横屏显示方案
摘要:文章主要记录了Android相机应用界面优化过程中的三项关键修改:1) 调整相机过渡界面的旋转角度,通过Bitmap旋转处理实现90度过渡效果;2)修正相机图标居中显示问题,修改ModeTransitionView的布局计算逻辑;3)优化预览画面居中显示,重新计算4:3比例下的预览区域位置,使用屏幕宽高动态计算边距。这些修改涉及CameraActivity、CameraUtil、CameraAppUI等多个核心类,通过日志输出验证了修改效果,解决了过渡动画方向、图标位置偏移和预览画面居中等显示问题。
2025-07-09 15:10:14
290
原创 C++ 高级特性
C++ 的高级特性包括模板元编程、智能指针、移动语义、多线程、Lambda 表达式等,这些特性有助于提升代码的灵活性、性能和可维护性。
2025-07-09 09:26:53
359
原创 C++中的std::vector和Java中的List<Integer>区别
C++的直接管理连续内存,存储元素的实际值(或对象)。Java的存储的是对象的引用(为包装类),元素分散在堆内存中,通过引用访问。的随机访问效率高(O(1)),因内存连续;插入/删除可能触发内存重分配。Java的(的常用实现)同样为O(1)随机访问,但涉及装箱/拆箱开销;插入/删除为O(1),但随机访问为O(n)。支持模板,编译时类型检查;Java的因类型擦除,运行时泛型信息丢失,需显式处理类型转换。需手动预留容量或依赖自动扩容(通常翻倍);Java的自动扩容(增长因子为1.5),无需手动干预。C++示例:
2025-07-09 09:26:44
214
原创 C++基础
C++ 是一种静态类型、编译式、通用的编程语言,支持过程化编程、面向对象编程和泛型编程。以下是一些基础语法和概念。数组用于存储相同类型的多个元素,字符串可以用字符数组或。函数是代码复用的基本单元,可以接受参数并返回值。C++ 支持类和对象,是面向对象编程的核心。指针存储内存地址,引用是变量的别名。STL 提供了常用数据结构和算法。
2025-07-01 09:48:10
214
原创 Android 12 - 重复播放按键音(上下左右、OK)
或者其实从 framework/base/core/res/res/xml/audio_assets.xml 也可以看到有方向键等音频资源,可以通过检索直接定位到位置。xml文件是为了替换默认声音资源,并且可以看到很多需要的如上下左右都在这里定义了,并且播放的都是Effect_Tick。目前已经确定了播放按键提示音的调用方法。自定义按键音播放,在Launcher上按 上下左右和OK 按键发现会播放两次按键提示音,其他的都是正常的。补充,由于是自定义按键音播放的,因此需要实现原生的按键音开关功能,增加条件。
2025-06-13 20:03:36
1023
原创 Android 12 - 恢复部分应用安装
首先日志检索 DeskClock 发现只有这么三行,很好定位到源码。使用展锐提供的代码编译出来的固件,不包含DeskClock等应用。然后检索一下 customized-restricted-app。之前也遇到过这个情况,只是时间太久忘记了,在这里再次记录!
2025-06-12 16:43:02
494
原创 Android - lock/unlock bootloader
在执行 adb remount 时高版本经常会提示失败此时就需要对设备的进行解锁操作。记录两个部分,Google解锁和展锐解锁。
2024-08-23 15:25:01
3522
1
原创 Android - 音频参数合入
相关工程师调试后会提供 xxx.nv 文件,需要使用 NVEditor ,打开对应的 modem 工程,然后 import 导入该文件,保存后获取对应的 xxxxx_nvitem.nv 即可 (注:对应 modem_bins 文件也需替换)相关工程师调试后会提供 audio_para 文件,将该文件替换至对应工程下的文件编译即可。
2024-08-23 13:03:40
679
原创 Android - failed to set system property
进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务。如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。如果属性名称以“ro.”开头,那么这个属性被视为只读属性。发现确实不好使,然后意识到这个 ro开头的貌似是只读属性的,去网上确认了下,确实如此。
2024-05-27 11:48:27
1643
原创 Android - 3段式耳机和4段式耳机
之前对此不太理解,误打误撞看到耳机硬件上的区别正好补充上这块的理解了。四节插头,也可以对应某些hifi播放器,做平衡接口,对应线路,左声道+,左声道-,右声道+,右声道-,把左右声道负极独立分离出来,不像前两种是共地的;四节插头,主要用于带线控或麦克风的耳机,对应线路,左声道+,右声道+,地-,麦克风+,耳机可以听歌,也可以使用线控或麦克风。常规三节插头,对应线路,左声道+,右声道+,地-,耳机主要用于版听歌,没有线控麦权;四节插头能听,也能说,在此功能上,区分两种接口排序。这篇博客介绍的很详细。
2024-05-14 18:17:31
589
原创 Android 10 - 音频通路调试
这里记录一下正常情况下的配置文件吧speaker->喇叭,headphone->耳机,earpiece->听筒ReturnOKParameter::cmd0 DISABLE1 EABLE2 SETMODE:0handhold 11 ear2 spk4 hp1 mic_02 mic_1。
2024-05-14 18:13:29
1863
原创 Android - 微信低版本登录提示版本过低
今天搞个特殊的,据说是微信低版本可以设置透明头像,简单总结一下操作步骤。这类的最好不要在自己的手机上测试,本次使用的是PC模拟设备来的雷电模拟器(模拟Android设备)NP管理器_3.1.1.apkcom.tencent.mm_1570e359-7.0.9.apk(7.0.9版本的微信)weixin8048android2580_0x28003036_arm64.apk(新版本的微信)
2024-05-01 10:00:00
8439
13
原创 ubuntu - 编译 linphone-sdk
业务需求需要定制sdk,首先声明我们需要的是在Android4.4上跑的sdk,因此本次编译的sdk最低支持为19(不同版本需要的环境不一致),编译过程较容易,难点在于环境配置。
2024-03-22 02:19:50
1481
原创 ubuntu - 安装cmake
大概意思就是编译使用cmake的最低版本是 3.22,我自己的是3.10.2。这里记录的是编译cmake替换成3.22的步骤。1、下载 cmake 3.22。
2024-03-18 20:45:00
1507
原创 Android 10 - 应用保活记录(展锐平台)
有其他同事改过这方面的问题,仅在此作个记录,方便查阅。貌似就这三个地方,以后有其他再更新。
2024-03-06 18:15:00
908
3
原创 Sip - Ubuntu 配置 miniSIPServer 服务器(测试用)
客户提供的账号过期了,简单搭建 SIP 服务器,以便测试使用。个人认为这个配置起来最为简单,且测试功能足够。官网miniSIPServer 可能是最容易使用的 VoIP(SIP) 服务器软件,VoIP 领域专家可以轻松部署丰富的企业通信业务,例如、随我来、连选组、队列、IPv6 等。即使您在 VoIP 方面没有经验,也不用担心!仅需要就可以搭建自己的 VoIP 系统,请参考了解更多细节。开发环境 ubuntu 16.04 LTS。
2024-01-12 16:15:51
1866
4
原创 Android - 串口通讯(SerialPort)
最早的博客里就是用过 Google 提供的 demo,最近想再写个其他的demo发现用起来有点麻烦,还需要导入其他 module,因此在网上找到了也是自Google开源的Android串口通信Demo。话不多说,直接开搞。demo地址放在了最后。
2024-01-10 15:36:22
4987
3
原创 Android - CrashHandler 全局异常捕获器
用于线程因未捕获异常而突然终止时调用的处理程序接口。当线程由于未捕获异常而即将终止时,Java虚拟机将使用thread . getuncaughtexceptionhandler()查询该线程的UncaughtExceptionHandler,并调用该处理程序的uncaughtException方法,将线程和异常作为参数传递。如果一个线程没有显式设置它的UncaughtExceptionHandler,那么它的ThreadGroup对象充当它的UncaughtExceptionHandler。
2024-01-09 10:45:57
1927
原创 Android - app实现 A/B 升级
官网介绍如下:A/B 系统更新(也称为无缝更新)的目标是确保在期间在磁盘上保留一个可正常启动和使用的系统。采用这种方式可以降低更新之后设备无法启动的可能性,这意味着用户需要将设备送到维修和保修中心进行更换和刷机的情况将会减少。
2023-12-29 09:07:17
2350
20
原创 Android 12 - 重新生成 ro.build.display.id 属性
测试过程中发现删除 out/target/product/project/system/build.prop 后执行 make 编译也并不会重新生成,但是执行 clean 操作后就会重新生成,怀疑是在 build/ 下里定义的。一般编译后的可以在 out/target/product/project/system/build.prop 下找到属性值,或者通过 adb shell getprop ro.build.display.id 打印出来。(注:部分内容已做屏蔽)可以看到就是这里实际生成的,
2023-12-28 09:09:15
1348
原创 Android Studio - 新版 logcat 过滤使用记录
由于 as 在每次升级都有很多问题,因此去年升级到Dolphin就一直未升级,Dolphin版本就可以在设置中打开新版的 logcat 过滤功能,觉得不太习惯又关掉了。这次刚好 asfp 的下载重新学习下新版的功能。在此简单记录下。我们可以在输入框输入 "p" 然后就会有提示 p 开头的过滤名称。旧版的只能在过滤包名的条件下再过滤一个名称,新版的可以自行创建过滤规则。输入包名也会有提示的。
2023-11-16 18:11:11
11690
2
原创 Android - adb shell (查找文件 find )
我这里的设备是执行过 root 和 remount 过的,否则可能在 push 后执行 chmod 755 busybox 赋予权限。
2023-11-16 10:04:13
6319
原创 Android Studio - 初识asfp(平台版 Android Studio)
这个就是官网了。使用环境需要再 Linux 下,我是在 ubuntu 环境中运行的。
2023-11-15 09:06:33
1241
原创 Android 12 - 运营商NV配置,广电
首先尝试了展锐合并delta_nv.bin的方式,结果没有生效,依旧无法识卡,根据Android 12 NV配置指南验证生效,记录下操作步骤
2023-11-10 13:31:32
602
原创 Sipdroid - 内存泄漏问题
根据场景确定使用Activity的Context还是Application的Context,因为二者生命周期不同,对于不必须使用Activity的Context的场景(Dialog),一律采用Application的Context,单例模式是最常见的发生此泄漏的场景,比如传入一个Activity的Context被静态类引用,导致无法回收。尽量避免 static 成员变量引用资源耗费过多的实例(如 Context),若需引用 Context,则尽量使用Applicaiton的 Context。
2023-11-10 12:03:54
77
原创 Android 10 - 记录添加以太网共享功能遇到的问题
这里定义了两个变量,一个是作为客户端,一个是作为服务端,在关闭以太网共享功能之后应该切换到client就对了,于是在更新状态的地方加了自己的判断方法。其实这个问题相对来说比较严重,首先在出异常的地方加上 try catch 捕获异常,结果定位到了。主要问题有两个,一个是空对象导致系统崩溃,另一个是关闭以太网共享之后无法正常通过网线上网。于是在方法开始前打印了下 iface,结果发现这里传了个 null,加上判空处理就好了。2、关闭以太网共享之后无法正常通过网线上网。这个经添加日志发现,是在。
2023-11-09 23:40:43
562
3
原创 ubuntu - 压缩文件及分包
解释:tar cvzpf - xxx(文件名) | split -d -b 4G(每个包大小) xxx(解压后文件名)解释:tar -zvcf xxx.tar.gz(压缩后的文件名) xxx/(需要压缩的文件目录)################## 递归删除目录下的 .git 目录,命令如下。################## 压缩源码目录。################## 合并压缩包。################## 分割压缩包。################## 解压压缩包。
2023-11-09 23:01:23
726
原创 Android 12 - 禁用振动功能
但是在Android S 上并没有找到这个类,有些奇怪,检索一下 hasVibrator() 方法,除去 systemUI 和 tests 的文件也就红框中的包含定义了。驱动部分不太清楚,默认是配置了的,但是我们的硬件上并没有马达,于是要在上层去掉相关的逻辑。,感觉可以了,编译验证,发现 make framework 并未生成 framework.jar 文件 ~~~查看这些类的注释,发现 SystemVibrator 的注释为。如果有无法开机的情况试试删除以上文件。中:控制主系统振动器的振动器实现。
2023-10-20 16:23:41
357
原创 Android 10 - 通话过程中按数字键打开拨号盘发送dtmf
packages/apps/Dialer/java/com/android/dialer/dialpadview/DialpadKeyButton.java(拨号盘的数字 button )packages/apps/Dialer/java/com/android/incallui/DialpadFragment.java(通话中的拨号盘)查看源码发现默认在通话中,按数字键是没有反应的,也就是说我们要实现这个需求,首先得按数字键后显示拨号盘,接着实现点击效果。由于直接在当前页面按数字按键,实现按键监听即可,
2023-08-18 10:32:09
498
原创 Android 12 - 编译问题
建议选择 14.04 版本的 64 位 Ubuntu 系统,查看 Ubuntu 具体版本号的命令如下: lsb_release –a。其实这些东西都已经配置好了,我的问题是在编译到 vmlinux 时出的异常,网上也没找到原因,最后在编译时打印了内存使用发现是。解决办法是直接添加交换空间,因为本身运行内存就是16GB的,以防万一增加了8G。选择 Ubuntu 14.04 系统后,使用以下命令安装编译环境依赖的工具包。服务器上的代码直接能用,下到本地后编译不过,重新梳理了下编译环境。1. 查看Swap信息。
2023-07-27 15:10:47
744
原创 Android - Sipdroid 简单记录
发现在线程启动时,“RtpStreamReceiver.timeout == 0 || Receiver.on_wlan || now-lastsent > 500” 条件下会发送一个 rtp 包,此处感觉和发送 dtmf 很像,而且和 wifi 网络下提示音播放正常也对应上了,于是查看 Receiver.on_wlan 这个参数在哪里定义。将其默认值修改为 true,注释置为 false 的语句,再次运行,提示音播放成功。情况1:wifi 情况下正常,4G或者以太网情况下无法播放提示音。
2023-04-21 11:58:59
450
原创 Android 10 - 替换系统录像、拍照提示音
简单记录下,客户希望在录像开始、结束以及拍照播放自己的提示音。这种应该属于系统提示音,先看一下是属于哪里的资源文件,然后替换就好了。开始录像的代码如上,发现最后有播放声音的方法,也就是说开始录像的提示音在 MediaActionSound 类中有定义,继续查看。只需要将需要替换的文件名与原定义的相匹配即可,最后需要将替换的资源文件添加拷贝的新软件的编译之中。
2023-02-21 11:33:57
507
原创 Android 10 - Detected problems with app nativelibraries(please consult log for detail):libxxx.so:
预置的三方应用提示警告如下 Detected problems with app nativelibraries(please consult log for detail):libxxx.so:
2022-11-30 11:38:52
826
原创 Android 10 - Signature|privileged permissions not in privapp-permissions whitelist(卡在开机logo无法开机)
预置到priv-app目录下的应用,如需申请signature权限,需在frameworks/base/data/etc/privapppermissions-platform.xml中进行额外的声明。
2022-07-18 09:25:05
987
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人