我目前正在开发一个Android项目,该项目上有一个录音机模块。

我正在使用MediaRecorder,并且除某些令人讨厌的情况外,它均按预期工作:

  • 当Android触发通知声音时,MediaRecorder停止
  • 接到电话且即使拒绝通话,MediaRecorder也会停止
  • 屏幕关闭时

  • mRecorder = new MediaRecorder();
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mRecorder.setOutputFile(mFileName3GP);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    mRecorder.setAudioEncodingBitRate(96000);
    mRecorder.setAudioSamplingRate(48000);
    mRecorder.start();

    我显然不希望录音在通话过程中仍在运行,但在其他情况下,我希望我的应用仍能正常执行录音。

    我没有发现任何指向解决方案的东西。但是,我正在考虑唤醒锁(用于屏幕关闭)和AudioFocus(用于通知和来电)。

    有什么建议吗?

    谢谢,
    Ant 1

    最佳答案

    如果将此逻辑嵌入到Acitivity中,它将受到Android中常规生命周期更改的影响。即使您阻止某些正常的操作发生,您也可以防止/破坏设备的某些预期行为。也许这就是您想要的,但是还有另一种方法。

    您可以改用Service:

    http://developer.android.com/guide/components/services.html

    http://developer.android.com/reference/android/app/Service.html

    http://www.vogella.com/tutorials/AndroidServices/article.html

    这将在后台运行,因此不会受到正常生命周期中断的影响,但是您仍然可以通过BroadcastReceiversIntents进行通信。

    这需要一些额外的工作来处理两者之间的所有通信,还可能需要某种通知,以便用户暂停/停止/重新开始录制,或者在您的情况下有意义。

    更新:

    在Android文档上找到此文章,这意味着您应该尝试暂停和开始录制,以及暂停和开始 Activity :

    http://developer.android.com/guide/topics/media/audio-capture.html

    也许这也会有所帮助。有评论提到,当您拨打/接听电话时,麦克风会停止输入。也许对您尝试做的事情有内置的限制:

    Pause and Resume Audio recording in Android

    10-07 19:21
    查看更多