android实现喇叭播放效果图,Android录音和播放扬声器作为选项

我正在为

Android编写一个sip应用程序.在通话期间,我必须录制麦克风输入并播放传入的音频.必须有扬声器电话的可选使用.它必须兼容Android 1.5(1.5,1.6,2.0,2.1,2.2,未来版本)和设备便携式.

好.所以我使用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)引起的.这会导致麦克风在某些设备上无法使用.但我必须打电话给它,否则我无法禁用扬声器.

有一种简单的方法可以使它变得简单,正确和有效吗?如果可能的话,没有像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);

}

非常感谢

一月

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值