自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Jetpack Compose和Swift UI

Google 刚推出Jetpack Compose时,我对这套框架完全是云里雾里的,也不知道怎么去学。最近巧合时机下开发了一个MacOS上的应用,使用的是Swift UI框架,当时就觉得长得跟Jetpack Compose怎么一个样。刚开始也不太会,不过一边AI边写,也算是完成了。写着写着就发现了这套框架的精髓。现在再回过头来看Jetpack Compose,理解起来也十分容易。

2025-02-27 15:18:28 146

原创 Visual Studio Code 中配置MSVC

【代码】Visual Studio Code 中配置MSVC。

2025-02-17 14:56:20 168

原创 Android Studio调试Framework代码

lunch sdk_phone_x86_64-userdebug(我这里选择模拟器)等待几分钟,结束后会在工程根目录生成android.iml和android.ipr。android.ipr是工程文件配置信息,android.iml是工程包含的文件结构。初始情况下android.iml包含的文件太多了,直接打开会严重影响体验,创建索引非常耗时。因此可以进行精简。sourceFolder 为要加载的目录excludeFolder为不加载的目录。

2025-02-10 16:25:47 590

原创 使用winscope分析窗口层级

使用winscope分析窗口层级。

2025-02-08 15:59:18 237

原创 跨主机使用adb

主机A和主机B处于同一个局域网,主机A通过USB或Wifi连接到adb设备C,现在需要主机B通过adb访问到设备C。连接usb adb或adb connect xxx.xxx.xxx.xxx(设备C的IP地址)通过端口转发,主机B通过adb命令连接主机A,主机A将数据包转发给设备C。adb connect xxx.xxx.xxx.xxx(主机A的IP地址)

2025-02-08 15:57:22 194

原创 编译Android源码并通过模拟器运行

repo sync--depth=1可以不要git历史记录,大大加快下载速度。

2025-02-06 18:05:11 225

原创 在Windows上运行源码编译的Android模拟器系统

lunch时选择aosp_x86_64-eng。

2024-12-30 11:41:25 373

原创 实用小技巧汇总

其功能是用于将本地生成的SSH公钥信息复制到远程主机。通常情况下,先使用ssh-keygen命令生成出SSH密钥对文件,随后使用ssh-copy-id命令将公钥文件复制到远程主机上,这样操作后再进行远程SSH访问时将无需进行账号密码的口令验证,而是通过密钥方式登录。1.提交信息中包含CTS STS等字样。3.过滤2022-02-15之后的提交。

2024-12-27 16:32:15 294

原创 Android 投屏延时优化

采集pcm数据不通过AudioRecorder采集,直接在AudioFlinger中采集pcm数据,注意需要采集内录模式下(REMOTE_SUBMIX)混音后的数据。视频编码及解码耗时更大,可以考虑多线程方案,如编码,网络发送,网络接收,解码和渲染分别采用不同的线程。编码pcm数据可以尝试针对不同性能的设备采用不同的码率或格式。特别是软件编码的情况下,耗时较大。在网络阻塞导致出现帧积累的情况下,消费者可能无法及时消耗掉,在渲染前应考虑丢帧,以免造成延时累计。不同性能的设备采用不同码率和格式,以提高效率。

2024-12-26 17:00:58 231

原创 音频基础知识集合

采样率(采样频率)即每秒内进行采样的次数。单位是Hz。采样率越高,数字波形的形状就越接近原始模拟波形,声音的还原就越真实。如44100HZ, 48000HZ等。

2024-07-31 11:15:07 1773

原创 Android-添加分区

新增一个分区情况如下, 由于一个磁盘主分区最多只能4个,树莓派刚好用完,增加一个则需要将主分区换位扩展分区,在扩展分区创建逻辑分区。创建一个扩展分区p3,用于创建逻辑分区 (vendor test 三个逻辑分区分别为p5 p6), userdata 主分区 p3。原始树莓派分区 boot system vendor userdata, 全部是主分区。修改脚本后,启动分区 boot 依然使用主分区p1, system使用主分区p2。本文的目标是在Raspberry 4B上添加一个test分区。

2024-07-23 16:00:29 696

原创 Android音频子系统分析-音频流区分处理

这类需求如果在手机平台上实现,会比较复杂,修改的内容也会比较多。手机由于只有一个主扬声器,所以不管是什么类型的声音都从一个地方出来,也不需要这样处理。如果是在车机平台,Android已经考虑到这种情况,只需要修改配置及少量的代码就可以实现。

2024-07-19 17:44:16 623

原创 Android-Overlay机制

Android原生Framework和一些系统App大量的使用了资源文件,如配置config.xml,字符string.xml,布局layout.xml等。我们在定制Android时,往往需要定制其中的一些内容,但又不希望破坏原有的结构,这时候就可以使用Overlay机制。一般用于修改frameworks和packages目录。Overlay有两种方案,静态Overlay和动态Overlay。

2024-07-18 18:37:57 4041

原创 Android音频子系统分析-car_audio_configuration.xml

先附上一个例子,再逐一解释。概括来说,该文件描述了车里有哪些区域,每个区域划分了多少组,每个组包含了哪些设备,每个设备接收哪些类型的音频流。

2024-07-16 15:17:38 633

原创 Android音频子系统-耳机插拔

带着以下几个问题,我们着手分析:Android系统在播放音乐的时候,如果插入耳机,系统会发生什么变化?会产生哪些逻辑?音频是如何从扬声器切换到耳机的?插入3.5mm的耳机孔和usb耳机又有什么不同?

2024-07-10 14:33:20 2066

原创 Android音频子系统分析-音量设置

调节音量大小,通常有两种方式:1. 通过硬件调节:放大电流。2. 通过软件调节:调整pcm振幅。这里主要说一下通过软件调节音量的流程,基于Android12。我们知道音频流是通过AudioFlinger处理并输出的,那软件调节的音量设置信息肯定需要传递到AudioFlinger中。Android中调节音量可以通过直接设置音量值的方式,也可以通过音量键进行逐步调节。

2024-07-08 11:15:26 1251

原创 Android音频子系统分析-audio_policy_configuration.xml

先附上一个高通的例子,再解释内容。

2024-07-05 14:13:39 1668

转载 Android13音频子系统分析-整体架构

目录一、应用API层二、Java框架层三、Native核心层3.1 AudioFlinger模块3.2 AudioPolicyService模块四、HAL层 本文基于AOSP13源码进行分析解读。所以与各个SoC平台厂商提供的运行在真实设备上的源码会有细微差异,但核心原理区别不大。 音频子系统在Android中是一个较为复杂的子系统,横跨应用API层,框架层,Native层和HAL层。使用Java、C++、C语言进行编写。运行在Linux用户空间的

2024-06-26 18:13:05 963 1

转载 Android中native_handle private_handle_t ANativeWindowBuffer ANativeWindow GraphicBuffer Surface的关系

native_handle/native_handle_t只是定义了一个描述buffer的结构体原型,这个原型是和平台无关的,方便buffer在各个进程之间传递,注意成员data是一个大小为0的数组,这意味着data指向紧挨着numInts后面的一个地址.我们可以把native_handle_t看成是一个纯虚的基类.一般来说,我们描述一块buffer,需要知道它在kernel中对应的fd,虚拟地址/物理地址,offset,size等等信息,后面我们在private_handle_t中就可以看到这些字段.

2024-06-26 18:03:20 243

原创 Android Notification - 灯光提示

先给出问题:Android从O升级到P之后,未接来电无呼吸灯闪烁提示了。处理未接来电的逻辑在platform/package/service/Telecomm里面,有未接来电时,会向系统发送通知,具体代码位置:Telecomm/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java private void s...

2020-04-15 11:24:21 1614

原创 Android 之 AppWidget

之前在项目上碰到了一个问题:刚开机的时候点击主屏幕的全局搜索框没反应,需要等几十秒之后才会正常反应。刚开始猜测是在等待什么初始化条件,但从应用栏里启动全局搜索却很快,因此可以排除这种情况,于是打算从源码层去看看。在launcher里并未找到这个全局搜索的相关代码,因此怀疑这是一个AppWidget,在android代码中全局搜索“android.appwidget.action.AP...

2019-07-25 15:51:20 625 2

Windows 平台BLE 开发(winrt)

Windows 平台BLE 开发(winrt)

2025-02-24

VideoEye 视频实时码流分析软件

VideoEye - 实时、高效、开源的视频分析框架。

2024-07-15

Android 录屏,录音,并通过MediaCodec编码后保存到文件,含全部源码

录屏采用MediaProjection 录音采用AudioRecord 音视频编码采用MediaCodec 保存到容器采用MediaMuxer

2024-04-29

空空如也

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

TA关注的人

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