weixin_43889242 2019-03-09 16:33 采纳率: 0%
浏览 1364
已结题

安卓两个录音线程冲突的问题?

安卓两个录音线程冲突的问题:我在做一个音频制作的安卓项目,用到了一个第三方JNI库。有一个活动里我想在按下一个按钮时,同时开始录音(用AudioRecord)和用麦克风检测外界声音的频率(开启JNI,然后process不停调用JNI里的一个检测函数)。

但很明显发生了冲突,如果是前者先开始录音,后者检测不到东西,用来存储检测到的数值的arraylist的是空的;如果后者先开始不停检测,前者录不到任何声音,只能得到一个空的的wav文件。很明显他们两个的数据源都是MediaRecorder.AudioSource.MIC。

因为JNI方法是无法改变的,一定是用麦克风当数据源,所以只能改我的录音机来让他们两个都能检测到声音。

【因为像全民K歌、唱吧、酷狗等软件,都有检测用户声音的频率对其进行打分的功能,而且同时进行了录音线程,没有发生任何冲突,我就感觉很不解!
我不相信他们是对录音得到的pcm切片进行分析得到的检测频率,因为这会有极大的延迟。】

【有一个同事说了他的思路。像任何安卓手机在打电话时,它的通话线程是一定要占用MIC的,而且无法改动。他提到了手机内录(打电话的时候同步录音)软件的开发,先打开那个软件,让软件得到.AudioSource.MIC,但软件保存录音后又会做一个数据输出口。再进行通话时,通话的线程用的AudioSource.MIC是假的,是内录软件的输出,蒙骗了通话线程,这样就实现了同步录音和通话。不知道这个软件之间的蒙骗,能不能做在我们自己的软件内部,就是把我的“录音机”做成“内录软件”】

急需解答!!

  • 写回答

1条回答 默认 最新

  • devmiao 2019-03-09 23:52
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)