Android中可以通过使用MediaRecorder.AudioSource.REMOTE_SUBMIX来实现系统声音的录制,这个属性只有系统应用能够使用,而且这个属性会截掉耳机和扬声器的声音,让我们听不到手机中播放音乐或者视频时的声音,而录制结束后会发现播放录制好的文件是有这些声音的。这显然不是我们想要的效果,这个时候我们可以通过修改底层C++代码来打开。这个方法仅使用于系统定制开发,三方APP就没有办法了。
源码文件路径:

frameworks\av\services\audiopolicy\enginedefault\src\Engine.cpp

在Engine.cpp中找到:

if (strategy != STRATEGY_SONIFICATION) {    // no sonification on remote submix (e.g. WFD)    if (availableOutputDevices.getDevice(AUDIO_DEVICE_OUT_REMOTE_SUBMIX,                                                 String8("0")) != 0) {        device2 = availableOutputDevices.types() & AUDIO_DEVICE_OUT_REMOTE_SUBMIX;    }}

改为:

if (strategy != STRATEGY_SONIFICATION) {    // no sonification on remote submix (e.g. WFD)    if (availableOutputDevices.getDevice(AUDIO_DEVICE_OUT_REMOTE_SUBMIX,                                                 String8("0")) != 0) {        device2 = availableOutputDevices.types() & AUDIO_DEVICE_OUT_REMOTE_SUBMIX;device2 |= (availableOutputDevices.types() & AUDIO_DEVICE_OUT_WIRED_HEADPHONE);        device2 |= (availableOutputDevices.types() & AUDIO_DEVICE_OUT_SPEAKER);    }}

这样,在使用 REMOTE_SUBMIX 这种模式录制音频时我们就能听到手机播放音视频等的声音了。

更多相关文章

  1. Android之增长的数字(仿支付宝资产数字)
  2. android 利用 MediaPlayer 类播放音乐
  3. Android(安卓)Studio学写英语听写APP(音乐播放器)一
  4. Lottie动画在Android和Ios开发中的应用——Android篇
  5. Android(安卓)Camera增加自定义图像处理并录制MP4
  6. Android(安卓)Frame动画概述及示例
  7. Android(安卓)Studio音乐播放器
  8. Android中Notification的framework层讲解
  9. 如何用Android(安卓)webview播放HTML5 video标签

随机推荐

  1. Android(安卓)使用的Project build.gradl
  2. [译]ANDROID Porting系列
  3. Android双击事件拦截方法
  4. Android(安卓)深入研究SQLite实例(六)
  5. Android(安卓)权限管理 EasyPermissions
  6. Android底层开发(一)Android源码编译
  7. Android(安卓)9.0 版本以上,多进程访问对W
  8. android的imageView获取图片
  9. Android(安卓)JetPack 学习之浅析sample
  10. Android(安卓)线程中更新UI