关于andorid中录音app之间的冲突问题

在开发录音相关的app的时候,遇到了一个问题,那就是如果有一个录音app已经运行了,那么再运行你的录音软件,那么就会出问题,原因很简单,android的底层只允许开启一个线程去读取麦克风的数据,二者冲突就会导致程序无法正常运行,那么该如何解决这个问题呢,其实思路很简单,就是在运行你的录音app之前,判断一下是否有别的录音软件正在运行,基于这个思路,进行了以下尝试:

1.我查看了AudioRecord中有哪些方法可用,有一个方法叫做getRecordingState()的方法,该方法是获取当前AudioRecord的状态,返回值有RECORDINGSTATE_STOPPED,RECORDINGSTATE_RECORDING,那就在运行之前,先用该方法尝试判断一下AudioRecord的状态,但是实际上,该方法没啥用,原因很简单,AudioRecord获取的状态只是当前实例的状态,(你的AudioRecord和别的录音软件的AudioRecord不是一个!!!)因为AudioRecord不是单例模式,嗯,所以还得尝试其他方法。

2.再看看AudioManager.java能提供什么方法吧,有个叫registerAudioFocus()的方法,好像是用来获取焦点的,但是尝试后,发现还是不行。此外还有一个registerAudioRecordingCallback(AudioManager.AudioRecordingCallback callback),这个方法是如果你的录音软件正在运行,但是有其他的录音软件要使用麦克风,就会回调的一个方法。

3.通过查看AudioManager的方法,发现了一个可能有用的,叫做getActiveRecordingConfigurations()的方法,这个方法可以获取,当前有几个AudioRecordingConfiguration,一般,一个录音app运行了,那么至少有一个AudioRecordingConfiguration,基于这个思路就可以判断当前是否有其他录音软件正在运行,代码如下,经过验证,也是有效的。

private AudioManager mAudioManager;

mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);

if(mAudioManager.getActiveRecordingConfigurations().size() > 0){

Log.i(TAG, "其他的录音app正在使用麦克风!!!");

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值