参考LineageOS:Build for oneplus3。
记得在源码根目录执行. build/envsetup.sh
,方便我们使用godir
快速切换目录。
Android源码中的文件和目录结构经常发生变化,即使7.1和8.1的版本也有很大变化,我们在LineageOS 15.1的frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
文件中定位下面的代码,并且添加+
后面的的两行代码:
这两行代码的意思大概是输出到REMOTE_SUBMIX
的同时,也在耳机(WIRED_HEADPHONE)或扬声器(SPEAKER)输出声音。
如果使用其它版本的源码,在这个文件可能找不到相应的代码,可以先用godir audiopolicy
搜索关键的目录,然后在那个目录中使用grep -rn getDeviceForStrategy
或者其它相关字符串定位关键代码。
$ godir audiopolicy
[1] ./frameworks/av/services/audiopolicy
[2] ./frameworks/av/services/audiopolicy/common
[3] ./frameworks/av/services/audiopolicy/common/include
...........
...........
[28] ./frameworks/av/services/audiopolicy/service
[29] ./frameworks/base/media/java/android/media/audiopolicy
[30] ./prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/x86_64-w64-mingw32/include
Select one: 1
$ grep -rn AUDIO_DEVICE_OUT_REMOTE_SUBMIX\;
enginedefault/src/Engine.cpp:484: device2 = availableOutputDevices.types() & AUDIO_DEVICE_OUT_REMOTE_SUBMIX;
managerdefault/AudioPolicyManager.cpp:1208: newDevice = AUDIO_DEVICE_OUT_REMOTE_SUBMIX;
LineageOS系统内置一个录制工具,源代码位于packages/apps/Recorder/
,录制视频时可以选择是否录制麦克风,我们把相关代码做一点改动,把录制麦克风改成内录。这样的话不管录制游戏还是音乐视频,都不会有外面的声音:
如上图,首先在AndroidManifest.xml
中添加一行:
然后把RecordingDevice.java
中输入源由MIC
替换为REMOTE_SUBMIX
:
至少要有200G的剩余空间,在i5-7500
处理器、16G内存的台式机编译一次用时3小时8分40秒。编译后生成的文件基本都在./out
目录下
刷机前先Backup备份数据,然后Wipe恢复出厂设置,否则可能会刷机失败,进不去系统。如果刷机失败,或者不想用自己编译的系统,可以Restore重置先前备份的系统。
修改少量代码后,重新编译系统,只用了6分29秒。如果执行repo sync
同步代码后再编译,时间可能会长一点。
我在比较吵的环境下录制手机屏幕,同时手机在播放一个音乐,结果视频在我手机上打不开,但是把录制的视频文件拖到电脑后发现没有杂音。我刚开始以为是权限的原因,但是重置之前的系统后发现又可以正常播放,我还不知道是什么原因。
也有可能是因为我刷机后,发现Recorder
应用的AndroidManifest.xml
忘记修改了,但是我又不想重新编译系统,于是只编译了这个应用。在重刷系统后,在recovery中挂载system分区直接替换掉system/priv-app/Recorder/Recorder.apk
文件导致的。
找到原因了,刷机后大概一些关键系统进程还没有启动导致图库也打不开、也看不到SD卡中的大部分文件,等个十来分钟就会恢复,应该是Google为了提高Android刷机后首次启动的速度,让不那么关键的进程在开机后再慢慢启动。
现在TWRP也有图案解锁,系统也有图案解锁,数据安全性提高了很多。如果重置之前备份的系统,发现图案解锁失败(没错,我就遇到了),可以重新进入recovery
模式,删掉/data/system/locksettings.db
文件,就可以绕过开机图案解锁了。
Google: Audio Terminology
Google: MediaRecorder.AudioSource
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-11-7 08:27
被Explorerl编辑
,原因: 更新grep