我目前正在开发一个Android项目,该项目上有一个录音机模块。
我正在使用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
这将在后台运行,因此不会受到正常生命周期中断的影响,但是您仍然可以通过BroadcastReceivers
和Intents
进行通信。
这需要一些额外的工作来处理两者之间的所有通信,还可能需要某种通知,以便用户暂停/停止/重新开始录制,或者在您的情况下有意义。
更新:
在Android文档上找到此文章,这意味着您应该尝试暂停和开始录制,以及暂停和开始 Activity :
http://developer.android.com/guide/topics/media/audio-capture.html
也许这也会有所帮助。有评论提到,当您拨打/接听电话时,麦克风会停止输入。也许对您尝试做的事情有内置的限制:
Pause and Resume Audio recording in Android