国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Android中實現系統聲音錄制-RK3399開發板源碼修改

移動開發 Android
Android中可以通過使用MediaRecorder.AudioSource.REMOTE_SUBMIX來實現系統聲音的錄制,這個屬性只有系統應用能夠使用。

前言

這幾天做系統聲音錄制,通過改源碼編譯后成功的;那就詳細介紹下內置聲源的錄制方案。

Android中可以通過使用MediaRecorder.AudioSource.REMOTE_SUBMIX來實現系統聲音的錄制,這個屬性只有系統應用能夠使用。

而且這個屬性會截掉耳機和揚聲器的聲音,聽不到手機中播放音樂或者視頻時的聲音。

這個時候我們就要來改系統源碼。

一、錄音的簡單實現

AudioRecord  audioRecord = new AudioRecord(MediaRecorder.AudioSource.REMOTE_SUBMIX
, captureSampleRate
, captureChannel
, AudioFormat.ENCODING_PCM_16BIT
, recordBufferSize);
new Thread(new Runnable() {
@Override
public void run() {
final byte[] bytes = new byte[recordBufferSize];
audioRecord.read(bytes, 0, bytes.length);
audioRecord.setPositionNotificationPeriod(captureSampleRate / 25);
audioRecord.setRecordPositionUpdateListener(new AudioRecord.OnRecordPositionUpdateListener() {
@Override
public void onMarkerReached(AudioRecord recorder) {
}
@Override
public void onPeriodicNotification(AudioRecord recorder) {
singleThreadPool.execute(new Runnable() {
@Override
public void run() {
try {
if(audioRecord!=null){
audioRecord.read(bytes, 0, bytes.length);
PcmBuffer.clear();
PcmBuffer.put(bytes, 0, recordBufferSize);
audioFrameParam.sampleRate = ZEGO_AUDIO_SAMPLE_RATE_44K;
//聲音的處理
}
}catch (Exception e){
e.printStackTrace();
}
}
});
}
});
audioRecord.startRecording();
}
}).start();

二、AudioSource輸入源介紹?

public final class AudioSource {
private AudioSource() {}
/** Default audio source **/
public static final int DEFAULT = 0;
/** Microphone audio source */
public static final int MIC = 1;
/** Voice call uplink (Tx) audio source */
public static final int VOICE_UPLINK = 2;
/** Voice call downlink (Rx) audio source */
public static final int VOICE_DOWNLINK = 3;
/** Voice call uplink + downlink audio source */
public static final int VOICE_CALL = 4;
/** Microphone audio source with same orientation as camera if available, the main
* device microphone otherwise */
public static final int CAMCORDER = 5;
public static final int VOICE_RECOGNITION = 6;
public static final int VOICE_COMMUNICATION = 7;
public static final int REMOTE_SUBMIX = 8;
}
  • DEFAULT:默認為MIC,android.permission.RECORD_AUDIO。
  •  MIC:麥克風,android.permission.RECORD_AUDIO。
  • VOICE_UPLINK:電話錄音上行線路,android.permission.CAPTURE_AUDIO_OUTPUT,系統權限不允許第三方app使用 。
  • VOICE_DOWNLINK:電話錄音下行線路,android.permission.CAPTURE_AUDIO_OUTPUT,系統權限不允許第三方app使用。
  •  VOICE_CALL:電話錄音上下線路,android.permission.CAPTURE_AUDIO_OUTPUT,系統權限不允許第三方app使用 。
  • CAMCORDER:攝像頭的麥克風,android.permission.RECORD_AUDIO。
  • VOICE_RECOGNITION:語音識別,android.permission.RECORD_AUDIO。
  • VOICE_COMMUNICATION:網絡電話,android.permission.RECORD_AUDIO。
  • REMOTE_SUBMIX:傳輸到遠程的音頻混合流,默認情況下如果用該項錄音,本地揚聲器或者耳機的聲音將會被截走,android.permission.CAPTURE_AUDIO_OUTPUT,系統權限不允許第三方app使用。

REMOTE_SUBMIX使用的注意事項

(1)需要系統權限 。

(2)會截走揚聲器和耳機的聲音,也就是說再錄音時本地無法播放聲音。

對于系統權限,需要在在AndroidManifest.xml添加 android:sharedUserId="android.uid.system",然后使用系統簽名來打包應用,這樣就第三方應用打包為系統應用,就可以使用系統權限了。

三、源碼修改

1、Android 10及以下的錄屏

frameworks\av\services\audiopolicy\enginedefault\src\Engine.cpp
if(mAvailableOutputDevices.getDevice(AUDIO_DEVICE_OUT_REMOTE_SUBMIX, String8("0")) != 0) {
device2 = availableOutputDeviceTypes & AUDIO_DEVICE_OUT_REMOTE_SUBMIX;
}

修改為:

if (mAvailableOutputDevices.getDevice(AUDIO_DEVICE_OUT_REMOTE_SUBMIX, String8("0")) != 0) {
device2 = availableOutputDeviceTypes & AUDIO_DEVICE_OUT_REMOTE_SUBMIX;
device2 |= (availableOutputDeviceTypes & AUDIO_DEVICE_OUT_WIRED_HEADPHONE);
device2 |= (availableOutputDeviceTypes & AUDIO_DEVICE_OUT_SPEAKER);
}

2、Android 11

目標frameworks\av\services\audiopolicy\enginedefault\src\Engine.cpp
if ((remoteSubmix = availableOutputDevices.getDevice(
AUDIO_DEVICE_OUT_REMOTE_SUBMIX, String8("0"),
AUDIO_FORMAT_DEFAULT)) != nullptr) {
devices2.add(remoteSubmix);
}

修改為?:

if ((remoteSubmix = availableOutputDevices.getDevice(
AUDIO_DEVICE_OUT_REMOTE_SUBMIX, String8("0"),
AUDIO_FORMAT_DEFAULT)) != nullptr) {
devices2 = availableOutputDevices.getDevicesFromTypes({
AUDIO_DEVICE_OUT_REMOTE_SUBMIX, AUDIO_DEVICE_OUT_WIRED_HEADPHONE, AUDIO_DEVICE_OUT_SPEAKER});
}

總結?

要實現安卓錄制系統聲音,正常情況下是獲取不到的,這個方案是修改源碼的方式來實現。

后面可以介紹下系統是怎么實現的,可以把源碼貼出來,大家一起學習。

圖片

責任編輯:姜華 來源: Android開發編程
相關推薦

2022-03-03 19:21:50

Harmony鴻蒙操作系統

2021-09-08 15:23:51

鴻蒙HarmonyOS應用

2023-03-07 15:54:45

鴻蒙Mesa庫

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2020-12-16 10:05:48

鴻蒙開發板Onenet平臺

2017-01-06 14:39:43

芯片

2020-12-02 11:55:40

OLED

2023-08-18 14:34:09

HDF驅動框架

2020-10-20 09:32:43

HiSparkWi-FiIoT

2022-04-01 15:54:01

DHCP網絡協議開發板

2022-04-14 11:44:25

LiteOS線程鴻蒙

2022-05-31 16:06:24

udp通信wifi鴻蒙

2022-10-14 15:55:24

環境搭建鴻蒙

2022-01-07 21:11:27

鴻蒙HarmonyOS應用

2021-05-25 14:47:43

鴻蒙HarmonyOS應用

2021-12-29 16:13:03

鴻蒙HarmonyOS應用

2020-11-17 12:15:36

MQTT開發

2022-02-24 16:39:41

OpenHarmonNiobe開發鴻蒙

2022-09-19 13:49:55

操作系統鴻蒙
點贊
收藏

51CTO技術棧公眾號

欧美视频一二三| 在线播放国产精品| 国产视频911| 99精品视频在线观看免费| 国产日本一区二区三区| 亚洲精品中文字幕99999| 久久韩国免费视频| 美女的胸无遮挡在线观看| 一区二区三区在线免费播放 | 在线观看h片| 欧美日韩在线视频观看| 看黄的a网站| 国产精品污网站| 成人精品视频一区二区| 97精品国产97久久久久久久久久久久| 黄色三级中文字幕| 成人午夜视频网站| 久久久999免费视频| 95精品视频在线| 午夜免费高清视频| 亚洲摸摸操操av| 一级毛片免费看| 精品久久久久久久大神国产| 午夜在线观看91| 欧美丰满少妇xxxxx高潮对白| 很黄的网站在线观看| 91精品国产美女浴室洗澡无遮挡| 亚洲淫性视频| 亚洲午夜性刺激影院| 成人在线视频区| 91福利视频网| 99国产精品一区二区| 国产精品xxxx| 久久精品国产999大香线蕉| 黄色一级大片免费| 国产欧美日韩视频一区二区| 922tv免费观看在线| 91成人网在线| yellow在线观看网址| 久久精品国产69国产精品亚洲| 7777精品| 亚洲在线一区二区| 久久99精品久久久久久国产越南| 欧美黑人在线观看| 中文字幕在线观看一区二区| 黄色大片在线看| 亚洲欧美精品一区| 另类图片第一页| 国产欧美一区二区视频| 国产一区二区三区观看| 色偷偷亚洲第一综合| 欧美日韩三级在线| 日韩五码电影| 亚洲综合中文字幕在线| 国产精品资源在线观看| 男人的天堂网av| 精品国产青草久久久久福利| 136导航精品福利| 国产日韩欧美精品| 91麻豆精品秘密| www.av在线播放| 欧美精品一二区| 激情偷拍久久| 国产熟人av一二三区| 精品污污网站免费看| 动漫一区二区三区| 国产在线精品日韩| 国产精品色眯眯| 欧美另类tv| 国产精彩精品视频| 国产成人亚洲综合a∨婷婷| 欧美18一12sex性处hd| 亚洲欧美激情视频| 久久精品青草| 99久久久无码国产精品6| 欧美三级韩国三级日本三斤| 日韩av懂色| 免费影院在线观看一区| 国产精品污网站| 国产免费拔擦拔擦8x在线播放| 国产成人鲁鲁免费视频a| 亚洲跨种族黑人xxx| 国产夜色精品一区二区av| 日本成在线观看| 日韩美女在线视频| 第四色在线一区二区| 欧美午夜电影网| 中文成人在线| 亚洲mm色国产网站| 高清不卡在线观看av| 一个人看的免费视频色| 亚洲国内精品视频| 精品国产一级毛片| 看一级黄色录像| 国产精品久久久久毛片软件| 香蕉视频在线播放| 性色av一区二区三区在线观看| 天使萌一区二区三区免费观看| 亚色视频在线观看| 亚洲乱码一区av黑人高潮| 91精品国产福利在线观看麻豆| aa在线观看视频| 欧美一级日韩免费不卡| 亚洲五码在线| 在线观看成人av| 欧美日韩在线第一页| 日韩欧美一级| 性欧美精品一区二区三区在线播放| 亚洲一级二级三级在线免费观看| 91精品国产66| 久久久久久99| 精品国产91久久久久久| 玖玖精品一区| 亚洲一二区在线| 欧美午夜精品一区| 亚洲美女久久| 99福利在线观看| 亚洲精品在线观看www| 亚洲激情精品| 中文字幕中文字幕在线中文字幕三区 | 最好看的2019的中文字幕视频| 国产精品vip| 蜜臀一区二区三区| 午夜精品美女自拍福到在线| 成人av综合一区| 交100部在线观看| 亚洲国产精品va在线看黑人| 欧美日韩国产亚洲一区| 亚洲一区二区三区成人| 国产精品欧美一区二区三区奶水| 国产精品欧美一区喷水| 日韩精品免费视频一区二区三区| 国产毛片视频网站| 日韩在线视频观看正片免费网站| 国产成人亚洲综合a∨猫咪| 玛雅亚洲电影| 国产精品www在线观看| 中文字幕不卡av| 久久亚洲精华国产精华液| 国产资源一区| 欧美 日韩精品| 国内精品小视频| 尤物在线观看一区| 国产欧美日韩精品高清二区综合区| 丁香激情视频| 成人黄色免费在线观看| 一本色道久久加勒比精品| 亚洲精品免费观看| 亚洲妇熟xxxx妇色黄| 在线看成人av电影| 亚洲最新av在线| 26uuuu精品一区二区| gogo久久日韩裸体艺术| 国产二区三区四区| 91麻豆国产语对白在线观看| 色妞www精品视频| 免费看黄色91| 97成人超碰| 1024欧美极品| 成人综合国产精品| 欧美一区二区黄色| 粉嫩欧美一区二区三区高清影视 | 国产人妻互换一区二区| 色99中文字幕| 国产成人aa精品一区在线播放| 久久九九久久九九| xxxx日韩| 黄色免费看片| 国产精品欧美激情在线播放| 欧美日韩亚洲国产一区| 国产欧美日韩亚洲一区二区三区| 福利片在线看| 亚洲一区二区不卡视频| 国产一区二区三区直播精品电影| 久久影院视频免费| 国产一区二区三区天码| 国产高清在线看| 在线观看亚洲视频啊啊啊啊| 一区二区三区高清国产| 国产日韩欧美电影| 99久久久久国产精品| 国内精品久久久久久野外| 久久亚洲a v| 欧美一区二区三区艳史| 欧美网站大全在线观看| 激情综合色播五月| 综合激情五月婷婷| 视频在线不卡| 中文字幕一区二区三区四区五区 | 无码人妻丰满熟妇区毛片18| 国产999在线观看| 欧美一区二区美女| 97aⅴ精品视频一二三区| 欧美性感美女一区二区| 草草在线观看| 福利电影导航| 日韩欧美在线电影| 78色国产精品| 亚洲免费视频在线观看| 午夜天堂影视香蕉久久|