我有一个基于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();