<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yang_0323的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yang_0323</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yang_0323]]></copyright><item><title><![CDATA[RNNoise的编译与集成]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/162525555</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/162525555</guid><author>yang_0323</author><pubDate>Thu, 02 Jul 2026 18:56:48 +0800</pubDate><description><![CDATA[Android Studio 不一定直接跑 RNNoise，更常见做法是把 RNNoise的src/、include/ 放进app/src/main/cpp/，自己写 CMakeLists.txt。生成的aar在app/build/outputs/aar/app-release.aar目录，将aar集成到第三方应用就可以调用了。配置CMakeLists.txt, 把src/rnnoise_data.c和src/rnnoise_tables.c加上。新增 RNNoise.java。执行完毕后确认文件的存在。]]></description><category></category></item><item><title><![CDATA[android10 应用安装]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/158975755</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/158975755</guid><author>yang_0323</author><pubDate>Fri, 13 Mar 2026 16:19:20 +0800</pubDate><description><![CDATA[本文将详细介绍Android系统中APK的安装流程，从PackageInstallerActivity的bindUi方法到PackageManagerService类的installStage方法，经过权限检查，安装参数设置，APK复制，安装处理，直至最终安装完成。点击一个未安装的apk后，会弹出安装界面，点击确定按钮后会进入PackageInstallerActivity类的bindUi()方法中，点击安装后调用startInstall方法进行安装。跳转到InstallInstalling类。]]></description><category></category></item><item><title><![CDATA[Android10 音频系统之AudioPlaybackConfiguration]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/150924751</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/150924751</guid><author>yang_0323</author><pubDate>Wed, 27 Aug 2025 16:06:43 +0800</pubDate><description><![CDATA[创建一个HashMap，用newPiid作为key，然后再new一个AudioPlaybackConfiguration作为value， 就这样AudioPlaybackConfiguration列表就建立起来了，后续调用MediaPlayer或AudioTrack都会更新这个列表。更新播放状态，调用AudioService的playerEvent将播放状态传递给AudioService。通过mPlayerState判断当前的播放状态，如果当前的流类型是处于播放的状态则返回true。]]></description><category></category></item><item><title><![CDATA[Android10 音频系统之AudioRecord]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/146307571</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/146307571</guid><author>yang_0323</author><pubDate>Tue, 18 Mar 2025 16:50:31 +0800</pubDate><description><![CDATA[mAudioRecord是audioFlinger->openRecord返回得到的recordHandle类型，recordHandle使用AudioFlinger::recordTrack初始化），实际上调用的是AudioFlinger::RecordThread::RecordTrack::start方法。3.调用AudioRecord的stop方法，AudioRecord就是RecordHandle对象，所以调用的stop方法就是RecordHandle的stop方法。]]></description><category></category></item><item><title><![CDATA[Anroid10 音频系统之数据传递]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/146253397</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/146253397</guid><author>yang_0323</author><pubDate>Fri, 14 Mar 2025 16:48:16 +0800</pubDate><description><![CDATA[这和平时通过write系统调用往文件中写数据类似，但这种工作方式每次都需要把数据从用户提供的Buffer中拷贝到AudioTrack内部的Buffer中，这在一定程度上会使引入延时。MODE_STATIC：这种模式下，在play之前只需要把所有数据通过一次write调用传递到AudioTrack中的内部缓冲区，后续就不必再传递数据了。MODE_STREAM模式 会使用到环形缓存区来同步数据，一个生产数据，一个消费数据，这个时候使用环形缓冲区是最可靠的。环形缓冲区：初始R=0，W=0，buf长度为LEN。]]></description><category></category></item><item><title><![CDATA[Android10 音频系统之音频输出通道]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/144968440</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/144968440</guid><author>yang_0323</author><pubDate>Wed, 08 Jan 2025 11:26:19 +0800</pubDate><description><![CDATA[本篇文章讲解音频输出通道的选择]]></description><category></category></item><item><title><![CDATA[Android10 音频系统之音量曲线]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/144850907</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/144850907</guid><author>yang_0323</author><pubDate>Tue, 31 Dec 2024 16:13:31 +0800</pubDate><description><![CDATA[本文深入探讨了Android音频策略中的音量控制，音量曲线的加载和修改]]></description><category></category></item><item><title><![CDATA[Android10 音频系统之音量调节流程]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/143779386</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/143779386</guid><author>yang_0323</author><pubDate>Mon, 25 Nov 2024 11:39:05 +0800</pubDate><description><![CDATA[有些知识点经常用的时候会觉得很熟悉，但是久了久了也会忘记，所有特意记录下来]]></description><category></category></item><item><title><![CDATA[Wifi扫描]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/143705978</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/143705978</guid><author>yang_0323</author><pubDate>Wed, 13 Nov 2024 17:53:20 +0800</pubDate><description><![CDATA[本文详述了Android中WiFi的扫描过程，从源码层面进行解析]]></description><category></category></item><item><title><![CDATA[Bluetooth蓝牙开关与扫描]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/143484805</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/143484805</guid><author>yang_0323</author><pubDate>Mon, 04 Nov 2024 15:17:52 +0800</pubDate><description><![CDATA[Android的蓝牙开关是一个典型的分层驱动、状态同步的机制。它通过定义清晰的状态机保证操作的可靠性，通过广播机制实现UI与状态的实时同步，并通过从应用层到硬件层的完整调用链，最终实现对蓝牙芯片的控制]]></description><category></category></item><item><title><![CDATA[Bluetooth蓝牙配对]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/143476082</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/143476082</guid><author>yang_0323</author><pubDate>Mon, 04 Nov 2024 14:31:25 +0800</pubDate><description><![CDATA[蓝牙配对源码分析]]></description><category></category></item><item><title><![CDATA[Bluetooth蓝牙连接]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/143425833</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/143425833</guid><author>yang_0323</author><pubDate>Fri, 01 Nov 2024 11:30:13 +0800</pubDate><description><![CDATA[当连接不同类型的蓝牙设备时，会用不同的profile去连接，此部分针对连接手机蓝牙进行源码分析]]></description><category></category></item><item><title><![CDATA[Java反射]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/142066578</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/142066578</guid><author>yang_0323</author><pubDate>Wed, 25 Sep 2024 19:42:07 +0800</pubDate><description><![CDATA[最近工作上用的反射比较多，所有特意写了一个小demo来加深加深理解]]></description><category></category></item><item><title><![CDATA[Android10 Settings源码解析]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/141645711</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/141645711</guid><author>yang_0323</author><pubDate>Thu, 29 Aug 2024 20:13:25 +0800</pubDate><description><![CDATA[Preference布局是一种不同layout布局的方式，主要用于settings设置中]]></description><category></category></item><item><title><![CDATA[Audio按键音量调节]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/141598970</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/141598970</guid><author>yang_0323</author><pubDate>Tue, 27 Aug 2024 14:22:12 +0800</pubDate><description><![CDATA[按键音量调节]]></description><category></category></item><item><title><![CDATA[Android10 车载音频架构之动态路由的配置]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/140272835</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/140272835</guid><author>yang_0323</author><pubDate>Tue, 09 Jul 2024 17:37:27 +0800</pubDate><description><![CDATA[通过contextNumber获取到usages，遍历usages将usage添加到mixingRuleBuilder中，然后再将mixingRuleBuilder添加到AudioMix中，将AudioMix addMix 到AudioPolicy中， 这样usage和device就关联上了。通过CONTEXT_NAME_MAP​​​​​​​关系，根据context可以找到contextNumber​​​​​​​。]]></description><category></category></item><item><title><![CDATA[Android10 CarService]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/140055133</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/140055133</guid><author>yang_0323</author><pubDate>Sat, 29 Jun 2024 11:32:06 +0800</pubDate><description><![CDATA[android automotive os中最重要的系统服务]]></description><category></category></item><item><title><![CDATA[Android10 bootAnimation启动过程]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/139987135</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/139987135</guid><author>yang_0323</author><pubDate>Fri, 28 Jun 2024 10:35:34 +0800</pubDate><description><![CDATA[开机动画]]></description><category></category></item><item><title><![CDATA[Android10 车载音频架构之音频焦点的管理]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/139797467</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/139797467</guid><author>yang_0323</author><pubDate>Wed, 19 Jun 2024 12:33:11 +0800</pubDate><description><![CDATA[两个或多个 Android 应用可以同时将音频播放到同一输出流，系统会将所有音频混合在一起。虽然这在技术上非常惊人，但可能会令用户非常头疼。为了避免每个音乐应用同时播放，Android 引入了“音频焦点”的概念。一次只能有一个应用获得音频焦点。

   当您的应用需要输出音频时，它需要请求获得音频焦点，在获得焦点时，它可以发出声音。不过，获得音频焦点后，您可能无法将焦点一直保留到播放完成。其他应用可以请求焦点，从而抢占您持有的音频焦点。如果发生这种情况，您的应用应暂停播放或调低音量，以]]></description><category></category></item><item><title><![CDATA[Android10 requestPermissions权限申请流程]]></title><link>https://blog.youkuaiyun.com/yang_0323/article/details/139770263</link><guid>https://blog.youkuaiyun.com/yang_0323/article/details/139770263</guid><author>yang_0323</author><pubDate>Tue, 18 Jun 2024 13:12:47 +0800</pubDate><description><![CDATA[requestPermissions源码解析]]></description><category></category></item></channel></rss>