我有一个基于webrtc的应用,需要作为默认的通话应用。 呼叫中有两种状态:Initiator(1),. Initiator(2)。当我处于状态1时,app必须通过耳机播放声音,并通过电话扬声器播放状态2,这可以通过
实现audioManager.setSpeakerphoneOn(boolean value)
但似乎这仅适用于MediaStream.MUSIC类型。无论如何,它就像电话系统上的魅力一样,当我们有蓝牙设备时就会出现麻烦,例如蓝牙耳机。 setSpeakerPhone将忽略蓝牙设备并从手机耳机/扬声器播放声音。好的,我可以检查是否有任何蓝牙设备连接到手机,只是播放没有setSpeakerPhone的声音,这不是问题。我仍然可以通过MUSIC流播放声音。但是,如果设备连接到汽车,这将无法正常工作。 Car似乎只能使用AudioManager.STREAM_RING。我根本无法理解这一点。在android中模拟本机调用的最佳实践是什么?我需要通过听筒/扬声器播放声音并在RING流中播放,但它根本不起作用,有没有人曾经击败过这个任务?
mediaPlayer = MediaPlayer.create(ctx, res);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
audioManager.setMode(AudioManager.STREAM_MUSIC);
if (isIniator) {
playFromSpeakephone(false);
} else {
playFromSpeakephone(true);
}
mediaPlayer.start();