自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 安卓的开机动画和FallbackHome机制

安卓开机动画结束后,在启动Launcher之前会先启动FallbackHome,之后才会启动Launcher。其中FallbackHome是属于Settings中的一个activity,Settings的android:directBootAware=true,并且FallbackHome在category中配置了Home属性,而Launcher的android:directBootAware为false,所以只有FallbackHome可以在direct boot模式下启动。

2026-01-06 20:31:34 1619

原创 手机和车机蓝牙连接后,代码设置不启用HFP

手机上电话APP进行设置注意此时需要在 AndroidManifest.xml设置权限。

2026-01-06 19:53:39 419

原创 如何判断硬件解码器或者软件解码器

code:android/device/qcom/msm8996(平台名)或者android/frameworks/av/media/libstagefright/data。这个文件被frameworks/av/media/libstagefright/xmlparser/MediaCodecsXmlParser.cpp解析。根据源码frameworks/av/media/libstagefright/MediaCodecList.cpp。设备:/vendor/etc/media_codecs.xml。

2025-12-17 11:47:20 257

原创 Windows电脑的Hyper-V虚拟机使用(ubuntu系统及磁盘空间扩展)

Hyper-V是Windows系统自带的虚拟机,启用方式如下:控制面板→程序和功能→启用或关闭windows功能→Hyper-V打勾→确定启用Hyper-V后,可以从开始菜单搜索Hyper-V打开。管理器界面如下。

2025-11-11 14:07:37 428

原创 添加SystemProperties的4种方法

在system\core\rootdir\init.rc中使用setprop设置属性例如,在sys.boot_completed=1时,setprop一个开机时的系统属性,可参考下面的setprop perf.drop_caches。

2025-10-11 19:28:34 268

原创 Android framework调试和AMS等服务调试

产物services.jar和framework.jar一样,在/system/framework/目录下,所以调试AMS的时候,make framework是不行的。其中的services.core就包含了/frameworks/base/services/core目录下的内容,例如ActivityManagerService。编译/frameworks/base/services目录下的代码,详见/frameworks/base/services/Android.bp中的定义。

2025-10-10 15:54:43 309

原创 查看安卓设备的音视频解码器信息

这里的MediaCodecInfo有一些非常实用的接口,除了上面用到的isEncoder()和getSupportedTypes(),还有isSoftwareOnly(),isVendor(),isHardwareAccelerated()等。有源码的话,直接查看/frameworks/av/media/libstagefright/omx/SoftOMXPlugin.cpp。我在设备中打印出的日志如下,其中,OMX开头的就是硬解。

2025-10-10 15:38:04 589

原创 Android开机时间查看

等待adb进程启动后(一般出现Android字样后),执行如下命令抓取开机log打开logcat.txt,搜索logcat关键字”boot_progress“、“sf_stop_bootanim”、“wm_boot_animation_done”或者直接执行以下命令过滤logcat以上是Android系统启动的各个阶段耗时,可以看到,整个开机过程耗时14.383秒,其中从按下power键到zygote启动,耗时5.166秒。

2025-09-16 14:29:29 714

原创 trace分析卡顿掉帧问题

流畅度是一个定义,我们评价一个场景的流畅度的时候,往往会使用 fps 来表示。比如 60 fps,意思是每秒画面更新 60 次;120 fps,意思是每秒画面更新 120 次。如果 120 fps 的情况下,每秒画面只更新了 110 次(连续动画的过程),这种情况我们就称之为,其表现就是,fps 对应的也从 120 降低到了 110 ,这些都可以被精确地监控到。

2025-09-09 11:11:14 1028

原创 Android中的SELinux

SELinux(Security-Enhanced Linux)即安全增强型Linux,是一个Linux内核的安全模块,其提供了访问控制安全策略机制,包括强制访问控制。SELinux为每个进程与文件都打上一个安全上下文标签,通过该标签实现主体(进程)对客体(资源文件)的访问控制。SELinux是适用于 Linux 操作系统的强制访问控制 (MAC) 系统。作为 MAC 系统,它与 Linux 中用户非常熟悉的自主访问控制 (DAC) 系统不同。

2025-08-27 17:08:40 1296

原创 AIDL和HIDL的AudioHal对比

HIDL 定义AIDL 定义Types.halFlags.aidlHIDL API 接口AIDL API 接口。

2025-08-26 20:01:10 973

原创 HIDL的Car Audio架构简单梳理

从 Android 14 开始,使用AIDL 定义音频 HAL 接口。对于以前的版本,音频 HAL 接口使用 HIDL 定义。上面的架构图来自官网涉及代码路径以及对应的内容hardware/qcom/audio/hal是原生的,可能会被其它的audio hal替换掉,例如展锐的代码中,实际生效的的audio hal路径为vendor/sprd/modules/audio。hardware/qcom/audio/hal的代码虽然在工程里,实际不生效。

2025-08-26 19:19:46 762

原创 winrar注册方法

将rarreg.key这个文件放入winrar的安装目录,例如默认目录为C:\Program Files\WinRAR。将这个文档名字改为rarreg.key,注意扩展名不再是txt了。关闭winrar后重新打开,发现已经注册。创建一个txt文档,内容如下。

2025-07-17 00:00:24 2023

原创 repo切换分支和查看分支的方法

方法一:repo forall -c "git checkout branch_name"方法二:repo start --all branch_name。在repo init和sync完成后,可执行以下的命令之一。

2025-07-16 19:15:21 852

原创 代码解析:安卓VHAL的AIDL参考实现

HIDL VHAL中接口定义文件为types.hal,IVehicle.hal和IVehicleCallback.hal。AIDL VHAL中,IVehicle .aidl和IVehicleCallback.aidl对应IVehicle.hal和IVehicleCallback.hal。

2024-12-28 16:45:13 1628

原创 安卓本地ringtones文件目录

路径LINUX/android/frameworks/base/data/sounds/ringtones/ogg/,例如LINUX/android/frameworks/base/data/sounds/ringtones/ogg/Girtab.ogg。

2024-10-28 10:39:44 418

原创 fastboot解锁操作

文件路径参考C:\Users\用户名\AppData\Local\Android\Sdk\extras\google\usb_driver\android_winusb.inf。adb reboot bootloader 进入fastboot。fastboot device 查看是否有fastboot设备。fastboot device可能会找不到设备。fastboot reboot 重启生效。上文的方法会需要fastboot的驱动文件。

2024-10-28 10:22:43 1338

原创 安卓14上蓝牙调用SystemProperties.set(),解决找不到SystemProperties.set()的问题

安卓14中的蓝牙,和安卓12的版本有较大的不同。找到这个类/tools/platform-compat/java/android/compat/annotation/UnsupportedAppUsage.java,从注释上看,它会根据sdk版本限制访问。进一步尝试,发现packages/modules目录下其它模块,SystemProperties.set()也编译不过,但get方法就可以。这样在蓝牙的代码中使用MySystemProperties.set(),就可以正常编译了,验证功能也OK。

2024-10-25 16:01:05 1397 1

原创 CarPropertyService信号配置和调试

本文主要记录property信号添加的操作流程。以下操作基于HIDL,安卓13:1.types.hal中更新信号首先,VHAL需要根据信号矩阵表,更新types.hal中的信号。文件路径LINUX\android\hardware\interfaces\automotive\vehicle\2.0\types.hal信号id是8位的16进制数,可分为4个部分,它们通过或运算累加起来。下面以原生信号为例,进行说明。 INFO_EV_BATTERY_CAPACITY =

2024-09-03 16:36:16 2029 2

原创 安卓源码中查看版本

build/make/core/version_defaults.mk中,查看PLATFORM_VERSION_LAST_STABLE字段。

2024-08-13 09:57:37 845

原创 CarService的构成和初始化分析

以下分析,基于安卓13的AAOS。

2024-06-19 16:02:18 1359

原创 linux解压和压缩命令tar

解压当前目录下所有tar.gz。

2024-06-06 14:26:01 193

转载 浮点运算结果出现误差原因分析及解决方案

如下C#代码:float a = 0.65f;float b = 0.6f;float c = a - b;此时c为多少?0.05?错误!此时c为0.0499999523!为什么?其根本原因是计算机所使用二进制01代码无法准确表示某些带小数位的十进制数据。 下面我们来分析下:我们知道将一个十进制数值转换为二进制数值,需要通过下面的计算方法:1. 整数...

2018-10-10 15:16:58 11365

转载 反编译apk

Mac环境下,按照这篇博文操作基本可行:https://blog.csdn.net/fengyuzhengfan/article/details/80286704值得注意的是,最后运行jd-gui-1.4.0.jar会出现闪退问题https://github.com/java-decompiler/jd-gui/issues/187按照这个链接里的说法,jd-gui-1.4.0.j...

2018-10-10 11:20:31 319

转载 vivo X21使用AS“解析包错误”问题解决

本人X21屏下指纹版,PD1728UD_A_1.21.5版本,用AS一直“解析包错误”,按照以下方法解决。 转载自:https://blog.csdn.net/qq895767507/article/details/80271933今天刚拿到vivo x21 屏下指纹版测试机,感觉在as上运行一下软件看下效果,结果发现一运行手机上就显示"解析包错误"。不是代码的问题,因为重...

2018-09-14 10:11:09 3017

原创 AlertDialog按键居中的处理

许久没用AlertDialog了,今天要做这么一个弹窗,只带一个“取消”按键,当然是居中比较好看。 记得以前用AlertDialog,布局是这样的:要在下方居中一个按键,很简单了,只设置一个按键即可,没设置的按键不会占空间。 没想到,较新的安卓版本已经改成了这样:即便我只设置一个按键,它也只是在它原本的位置,不受其他按键的影响。根据Stack Overflow上...

2018-09-05 22:55:16 4284

转载 [转载]mac下Android studio中Terminal执行adb命令

当你的Android studio刚安装到您的Mac电脑中的时候,你是没有办法直接在Terminal里面执行adb命令的,这是因为你并没有配置。会提示这个错误   bash: restart: command not found .所以下面让我们来配置ADB。1.如果你的电脑里面有.bash_profile文件,请直接转到52.在AndroidStudio的Terminal命令行中输入命令...

2018-08-14 14:35:21 1491

原创 cygwin安装apt-cyg,并在国内网络下载android源码

开了常用的科学上wang软件后,cygwin还是无法repo从google下载源码,于是研究一下国内网络下载源码。当然也可以直接下载打包好的,科大这里有完善的说明。https://lug.ustc.edu.cn/wiki/mirrors/help/aosp这里只想补充下安装cygwin到repo的部分。我在repo init时,会报错:warning: gpg (GnuPG) is not ava...

2018-05-29 19:19:49 1414

原创 Android Studio读取jar包

如图,在AS左边,右键项目名称,选中Open Module Settings在Project Structure弹窗中选中Dependencies,加入对应的库

2018-05-11 17:56:26 5367

原创 git常用指令

git add -ugit commit -m ""git commit --amendgit push origin HEAD:refs/for/xxxxgit loggit log --onelinegit reset --hard FETCH_HEADgit reset HEAD <file>HEAD替换为parent的commit_id,就可以取消相关修改git cherry-...

2018-05-10 15:37:01 210 1

原创 adb及adb shell命令整理

录屏adb shell screenrecord /sdcard/music.mp4导出到当前路径adb pull /sdcard/file.mp4adb push $push_path/$apk_name $install_pathadb install -r xxx.apkadb shell am broadcast -a intent.action.xxxadb sh...

2018-05-10 15:20:40 909 1

原创 android.os.BadParcelableException: ClassNotFoundException when unmarshalling

先学英语:unmarshalling 解组;数据编出今天遇到这样一个问题堆栈大致和这个链接里面的一样https://stackoverflow.com/questions/46274896/android-os-badparcelableexception-classnotfoundexception-when-unmarshalling-apCaused

2017-11-01 20:41:23 4649

原创 内存泄露和java.lang.ref.Finalizer

遇到一个内存泄露的问题,adb shell dumpsys meminfo $package_name or $pid发现有大量的View用MAT工具分析之后,发现时这个View里面的一个回调数组,持有多个此View的对象,应该就是这个数组中的回调没有被释放,Calback对应的View也没被释放。值得一提的是,这些回调在注册的时候,已经强制转换为弱引用。https://sta

2017-07-24 19:28:40 5126

原创 Window层级和背景

addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);mLp.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND;http://blog.csdn.net/yhaolpz/article/details/68936932Window 分类WindowManager

2017-06-12 19:43:22 969

原创 Kotlin基本语法

2017年Google I/O大会,确定从Android Studio 3.0开始,官方支持Kotlin。kotlin官网上,资料还是比较全的:http://kotlinlang.org/docs/reference/basic-syntax.htmlhttps://kotlinlang.org/docs/tutorials/koans.html还有在线编辑器:http

2017-05-19 11:02:47 385

空空如也

空空如也

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

TA关注的人

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