录制电话时,手机会冻结

时间:2012-03-18 16:41:27

标签: android android-mediarecorder phone-call

我正在尝试构建一个需要录制电话的应用程序(主要是外出)

我尝试将媒体源设置为MediaRecorder.AudioSource.VOICE_CALL,这会导致应用冻结。

我还尝试将媒体源设置为MediaRecorder.AudioSource.VOICE_DOWNLINK,但一旦连接到电话就会崩溃。

我尝试过以下权限:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.Permissions.PROCESS_OUTGOING_CALLS"/>

但没有任何作用。

有关录制电话的任何建议。

另外,我发现一些旧帖子说只有部分手机允许录制语音电话。

有没有办法以编程方式检测此应用程序是否在这样的手机上运行(如果没有,我可以指示他们使用扬声器电话或其他东西)

谢谢!

2 个答案:

答案 0 :(得分:2)

不是直接处理录制,而是通过子类化录制部分来使用异步任务。这可以提高您的应用程序性能并避免崩溃。希望这个http://developer.android.com/resources/articles/painless-threading.html能让你在这个方向上有更好的想法。

答案 1 :(得分:1)

为了实现这一点,你需要所有这些,我相信:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CALL_PHONE" />

并且很可能

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

当然,您需要确保所有适当的警告和EULA都已到位。

不确定您发布了什么

<uses-permission android:name="android.permission.Permissions.PROCESS_OUTGOING_CALLS"/>

是一个错字,但它应该是

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

就像你说的那样:old posts谈论一些设备不支持通话录音功能的事实。

  • 你有什么方法可以在其他设备上测试,或者请朋友或一小组测试人员尝试其他设备......问题似乎是entirely device specific

我建议您尝试使用上述权限,看看是否可以在其他设备上进行测试以缩小设备或编程问题的范围,如果是设备,那么您可以了解并更好地找到可能的解决方法。