Android录音和播放扬声器作为选项

Android录音和播放扬声器作为选项,第1张

概述我正在为 Android编写一个sip应用程序.在通话期间,我必须录制麦克风输入并播放传入的音频.必须有扬声器电话的可选使用.它必须兼容Android 1.5(1.5,1.6,2.0,2.1,2.2,未来版本)和设备便携式. 好.所以我使用AudioTrack播放传入的音频,AudioRecord用于记录麦克风的数据,AudioManager.setSpeakerphoneOn()用于启用或禁用免 我正在为 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 ……的流作为麦克风输入.我认为同样的问题出现在摩托罗拉手机上(客户抱怨).经过一些测试后,我意识到它是由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);  }

非常感谢
一月

解决方法 试试看……..

AudioManager audio =(AudioManager)context.getSystemService(Context.AUdio_SERVICE);audio.setRingerMode(AudioManager.RINGER_MODE_norMAL);

总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1124118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存