AudioRecorder阻止麦克风

时间:2012-08-06 20:49:56

标签: android audio-recording

我正在开发一款允许用户录制语音备忘录的应用。为此,我使用AudioRecorder不断从麦克风获取音频数据并将其处理为Mp3。

直到最近,我发现如果我的应用程序在后台运行时收到/拨打电话,那么另一方无法听到我的声音。点击拨号器屏幕上的静音/取消静音按钮不会做任何事情 - 麦克风似乎被禁用,直到我停止我的应用程序。

现在的问题是如何处理这种情况?我的唯一选择是在语音呼叫启动后释放AudioRecorder吗?如果AudioRecorder在通话过程中只跳过麦克风的音频数据,我会完全没问题,但用户可以通过应用程序进行通信的情况是不可接受的。

谢谢,

2 个答案:

答案 0 :(得分:0)

在任何给定时间,只有1个应用可以使用麦克风。您可能希望使用PhoneStateListener,以便在电话响铃或摘机时释放录音机。

答案 1 :(得分:0)

您可以使用PHONE_STATE操作拦截来电作为BroadcastReceiver的一部分。然后,在接收器的onReceive功能中,您将检查手机的状态:

public void onReceive(Context context, Intent intent) {

    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

    if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
        //Phone is ringing

    }else if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK){
        //Call received


    }else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
        //Call Dropped or rejected

    }

}

不要忘记在清单中添加必要的权限。

同样,您也可以截取拨出电话。 Here是一个很好的教程,解释了如何做到这两点。

其余的是关于停止和恢复录音机取决于你截取的内容。