【问题标题】:Recording audio interrupted by notifications, calls and screen timeout录制因通知、通话和屏幕超时而中断的音频
【发布时间】:2014-02-14 17:58:17
【问题描述】:

我目前正在开发一个 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(用于通知和来电)。

有什么建议吗?

谢谢, 蚂蚁1

【问题讨论】:

    标签: android audio mediarecorder android-mediarecorder


    【解决方案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 文档上发现这篇文章暗示您应该尝试暂停和开始录制以及暂停和开始活动:

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

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

    Pause and Resume Audio recording in Android

    【讨论】:

    • 这可能是屏幕关闭时的正确方法,但有助于录制不会因通知或来电而停止?
    • AFAIK 它不会受到通知或电话的影响,但没有足够的直接经验可以肯定地说。
    • 显然,在 Activity 暂停时暂停录制并不能解决所述问题,尽管在某些情况下,执行音频操作的 service 需要停止他们并让开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多