好.所以我使用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录音和播放扬声器作为选项所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)