Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android录音和播放扬声器作为选项大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为 Android编写一个sip应用程序.在通话期间,我必须录制麦克风输入并播放传入的音频.必须有扬声器电话的可选使用.它必须兼容Android 1.5(1.5,1.6,2.0,2.1,2.2,未来版本)和设备便携式.

好.所以我使用AudioTrack播放传入的音频,AudioRecord用于记录麦克风的数据,Au@L_220_2@manager.setSpeakerphoneOn()用于启用或禁用免提电话.

听起来很简单,但并不像应该的那样简单.除非调用Au@L_220_2@manager.setMode(Au@L_220_2@manager.MODE_IN_CALL),否则Au@L_220_2@manager.setSpeakerphoneOn(false)不起作用.所以我必须在MODE_IN_CALl.

仍然可以,简单,它适用于我的G1与Android 1.6,旧的三星手机,模拟器,许多我们的客户设备等.但它无处不在:(

在三星平板电脑GT-P1000上,我得到0,0 ……的流作为麦克风输入.我认为同样的问题出现在摩托罗拉手机上(客户抱怨).经过一些测试后,我意识到它是由Au@L_220_2@manager.setMode(Au@L_220_2@manager.MODE_IN_CALL)引起的.这会导致麦克风在某些设备上无法使用.但我必须打电话给它,否则我无法禁用扬声器.

有一种简单的方法可以使它变得简单,正确和有效吗?如果可能的话,没有像Sipdroid这样高度危险的源代码

if (RtpStreamReceiver.samsung) {
    Au@L_220_2@manager am = (Au@L_220_2@manager) Receiver.mContext.getSystemservice(Context.AUdio_serviCE);
    am.setMode(Au@L_220_2@manager.MODE_IN_CALL);
    am.setMode(Au@L_220_2@manager.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(Au@L_220_2@manager.MODE_NORMAL); 
 }

非常感谢
一月

解决方法

试试看……..

Au@L_220_2@manager audio =(Au@L_220_2@manager)context.getSystemservice(Context.AUdio_serviCE);audio.setRingerMode(Au@L_220_2@manager.RINGER_MODE_NORMAL);

大佬总结

以上是大佬教程为你收集整理的Android录音和播放扬声器作为选项全部内容,希望文章能够帮你解决Android录音和播放扬声器作为选项所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。