- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 Expat Xml解析工具的使用方法
分别是处理开始标签和结束标签的回调函数。在解析过程中,当遇到开始标签时,会调用。是处理字符数据的回调函数。在解析过程中,当遇到字符数据时,会调用。在解析过程中,用户数据会被传递给回调函数。先给出一个xml文件,然后我们来解析它。当遇到结束标签时,会调用。这个函数用于设置字符数据处理程序。这个函数用于设置元素处理程序。是 XML 解析器的指针,是 XML 解析器的指针,是 XML 解析器的指针,这个函数用于设置用户数据。
2024-10-23 10:36:03
245
原创 音频数据匀速写入pcm节点的方式
最近在向pcm节点中写入数据的过程中,发现pcm节点并不是同步的,用一个循环从file里面读出pcm数据后写入pcm节点,会出现over run。因此我意识到,需要写一包数据,usleep这个数据播放时长。但是发现,播放了一包20ms的音频数据,usleep了20ms,会出现播放杂音。因为usleep也是耗时的。写入的次数多了,自然就会出现underrun。
2024-06-10 10:46:25
383
原创 一文搞懂值传递和地址传递
在内存中的位置是不同的,即使它们存储的地址原本是相同的。所以,即使我们改变了。上面的代码,malloc会不会为a申请到空间?,它存储在内存中的某个位置,我们可以假设这个位置的地址是。也存储在内存中的某个位置,我们可以假设这个位置的地址是。在内存中的位置是不同的,我们可以假设这个位置的地址是。现在存储的地址是新分配的内存的地址,假设是。让我们来解释下原因吧。现在,我们创建了一个指针变量。函数中,我们有一个新的指针变量。但是,这个改变并没有影响到。假设我们有一个整数变量。分配了新的内存,所以。
2024-04-15 14:03:59
210
1
原创 Android Hal lowmemory问题处理
在Android Audio Hal里面写了一段combine的代码,运行时发现每次播放完音频,整个机器都会重启。在看一下status:cat status |grep VmRSS。lmkd把全部进程都杀了,看来我写的这部分有大毒啊。错误很低级,但是调查过程挺有意思。再测试发现,内存正常了。
2024-04-05 16:47:27
296
2
原创 android源码编译过程中jar的分类
out/target/common/obj/JAVA_LIBRARIES/包名_intermediates/classes.jar。在out/target/product下最终生成的jar里面是dex文件,因此其他工程无法引用此jar。header的jar包里面只有public的方法,里面没有实现。classes.jar里的方法是带有实现的。
2024-03-11 14:48:25
347
1
原创 Android CarAudioFocus详解(二)
流程四:如果从mFocusHolders和mFocusLosers中没有找到要释放的这个FocusEntry,并且这个要释放的FocusEntry和mDelayedRequest有着相同的clientId,就把mDelayerRequest赋值为null。:AudioFocusInfo为传入的参数,里面包含了USAGE类型,GAIN类型,ClientId。:也是HashMap,里面保存了被抢占焦点,有可能恢复持有的FocusEntry。:保存未申请成功,但是接受延迟获得焦点的FocusEntry。
2023-11-14 20:30:38
924
1
原创 Android9.0的audio_server使用32位so动态库的原因
一个32位的项目,替换64位so动态库发现不生效,后又替换32位的动态库发现生效。因为Android10,Android11,Android12版本都是64位,所以调查下原因。发现没有定义AUDIOSERVER_MULTILIB变量,因此直接给编译成32位的了。32位的程序只会调用32位的动态库。
2023-11-08 16:58:57
200
1
原创 Android CarAudioService 动态注册AudioPolicy
方法的工作就是生成一个AudioMix对象,这个AudioMix作用就是将usage和DeviceInfo进行多对一映射。之后通过AudioManager的registerAudioPolicy方法将AudioPolicy注册到AudioService。Android源码中CarAudioService是如何注册动态AudioPolicy的。首先,CarAudioService调用setupDynamicRouting方法。将Output和mPolicyMixes中的address和output做映射。
2023-11-01 09:44:59
401
1
原创 Android CarAudioFocus详解(一)
getDynamicAudioPolicy函数的实现比较长,上半部分主要实现的是通过audioControl hal的getBusForContext来实现动态路由,后半部分就是将外部音频焦点嵌入AudioPolicy的过程。在CarAudioService中的init的方法进行初始化,mUseDynamicRouting为true的时候,会调用setupDynamicRouting函数和setupVolumeGroups函数。
2023-10-23 16:33:40
1623
2
原创 maven编译命令使用
找到maven工程的根目录(包含porm.xml的文件夹)。在该文件夹下执行,mvn compile ----->maven工程编译。然后执行,mvn package ----->maven打包根据生成的jar包,在target目录下执行:java -jar **生成的jar**.jar...
2022-01-21 15:58:21
912
原创 Eclipse Select Java Application
项目编译的时候,点击Run as JavaApplication。弹出了这个弹窗。这个弹窗的主要意思就是找不到main函数,需要手动输入你的main函数所在的类名。输入后点击ok,即可正常运行。
2022-01-21 15:47:45
2705
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人