自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 一文搞懂jni方法的添加

jni

2024-06-27 16:44:36 115

原创 音频数据匀速写入pcm节点的方式

最近在向pcm节点中写入数据的过程中,发现pcm节点并不是同步的,用一个循环从file里面读出pcm数据后写入pcm节点,会出现over run。因此我意识到,需要写一包数据,usleep这个数据播放时长。但是发现,播放了一包20ms的音频数据,usleep了20ms,会出现播放杂音。因为usleep也是耗时的。写入的次数多了,自然就会出现underrun。

2024-06-10 10:46:25 297

原创 一文搞懂值传递和地址传递

在内存中的位置是不同的,即使它们存储的地址原本是相同的。所以,即使我们改变了。上面的代码,malloc会不会为a申请到空间?,它存储在内存中的某个位置,我们可以假设这个位置的地址是。也存储在内存中的某个位置,我们可以假设这个位置的地址是。在内存中的位置是不同的,我们可以假设这个位置的地址是。现在存储的地址是新分配的内存的地址,假设是。让我们来解释下原因吧。现在,我们创建了一个指针变量。函数中,我们有一个新的指针变量。但是,这个改变并没有影响到。假设我们有一个整数变量。分配了新的内存,所以。

2024-04-15 14:03:59 153 1

原创 Android Hal lowmemory问题处理

在Android Audio Hal里面写了一段combine的代码,运行时发现每次播放完音频,整个机器都会重启。在看一下status:cat status |grep VmRSS。lmkd把全部进程都杀了,看来我写的这部分有大毒啊。错误很低级,但是调查过程挺有意思。再测试发现,内存正常了。

2024-04-05 16:47:27 203 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 192 1

原创 Android CarAudioFocus详解(二)

流程四:如果从mFocusHolders和mFocusLosers中没有找到要释放的这个FocusEntry,并且这个要释放的FocusEntry和mDelayedRequest有着相同的clientId,就把mDelayerRequest赋值为null。:AudioFocusInfo为传入的参数,里面包含了USAGE类型,GAIN类型,ClientId。:也是HashMap,里面保存了被抢占焦点,有可能恢复持有的FocusEntry。:保存未申请成功,但是接受延迟获得焦点的FocusEntry。

2023-11-14 20:30:38 574 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 127 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 240 1

原创 CarAudioService音频焦点函数实现分析

【代码】CarAudioService音频焦点函数实现分析。

2023-10-24 16:30:08 354

原创 Android CarAudioFocus详解(一)

getDynamicAudioPolicy函数的实现比较长,上半部分主要实现的是通过audioControl hal的getBusForContext来实现动态路由,后半部分就是将外部音频焦点嵌入AudioPolicy的过程。在CarAudioService中的init的方法进行初始化,mUseDynamicRouting为true的时候,会调用setupDynamicRouting函数和setupVolumeGroups函数。

2023-10-23 16:33:40 1295 2

原创 Android FasterMixer分析(一)

Android音频数据流

2023-10-20 17:21:38 538 1

原创 maven编译命令使用

找到maven工程的根目录(包含porm.xml的文件夹)。在该文件夹下执行,mvn compile ----->maven工程编译。然后执行,mvn package ----->maven打包根据生成的jar包,在target目录下执行:java -jar **生成的jar**.jar...

2022-01-21 15:58:21 849

原创 Eclipse Select Java Application

项目编译的时候,点击Run as JavaApplication。弹出了这个弹窗。这个弹窗的主要意思就是找不到main函数,需要手动输入你的main函数所在的类名。输入后点击ok,即可正常运行。

2022-01-21 15:47:45 2437 1

EasyExcel使用的相关的jar包

1.学习EasyExcel的使用。

2022-01-21

空空如也

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

TA关注的人

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