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

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

安卓两个录音线程冲突的问题:我在做一个音频制作的安卓项目,用到了一个第三方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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档