gpt4 book ai didi

Android录音和播放+免提电话作为选项

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:09 25 4
gpt4 key购买 nike

我正在为 Android 编写一个 sip 应用程序。在通话期间,我必须记录麦克风输入并播放传入的音频。必须可选择使用免提电话。它必须与 Android 1.5+(1.5、1.6、2.0、2.1、2.2、 future 版本)兼容且设备便携。

好的。因此,我使用 AudioTrack 来播放传入的音频,使用 AudioRecord 来记录来自麦克风的数据,并使用 AudioManager.setSpeakerphoneOn() 来启用或禁用扬声器。

听起来很简单,但实际上并不像它应该的那么简单。除非调用 AudioManager.setMode(AudioManager.MODE_IN_CALL),否则 AudioManager.setSpeakerphoneOn(false) 不起作用。所以我必须进入 MODE_IN_CALL。

仍然很好,很简单,它可以在我的 G1 和 Android 1.6、旧的三星手机、模拟器、我们的许多客户设备等上运行。但它并不适用于所有地方:(

在三星平板电脑 GT-P1000 上,我得到 0, 0, 0, 0, ... 流作为麦克风输入。我认为摩托罗拉手机也有同样的问题(客户提示)。经过一些测试,我意识到这是由 AudioManager.setMode(AudioManager.MODE_IN_CALL) 引起的。这会导致麦克风在某些设备上不起作用。但我必须调用它,否则我无法禁用扬声器。

有没有一种简单的方法可以让它变得简单、正确和有效?如果可能的话,没有 hell 般的 Sipdroid 高度危险的源代码:

if (RtpStreamReceiver.samsung) {
AudioManager am = (AudioManager) Receiver.mContext.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_CALL);
am.setMode(AudioManager.MODE_NORMAL);
}

 void initMode() {
samsung = Build.MODEL.contains("SAMSUNG") || Build.MODEL.contains("SPH-") ||
Build.MODEL.contains("SGH-") || Build.MODEL.contains("GT-");

if (Receiver.call_state == UserAgent.UA_STATE_INCOMING_CALL &&
(Receiver.pstn_state == null || Receiver.pstn_state.equals("IDLE"))) {
setMode(AudioManager.MODE_NORMAL);
}

非常感谢简

最佳答案

试一试.........

AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

关于Android录音和播放+免提电话作为选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4195864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com