Android AudioManager和输出很难理解。我正在检查AudioManager api并搜索一些解释。但我想要的场景并不是我想要的方式。
我有本地下载的音频文件。首先我将它们作为STREAM_MUSIC播放。因此声音将输出到手机扬声器,当耳机插入时,它将通过耳机播放。
但我被要求将音频文件输出到手机而不是扬声器。 没有简单的方法来改变它。我设置了audioManager.setSpeakerPhoneOn(false),音频仍然通过扬声器播放输出。
所以经过研究,我修改如下:
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.requestAudioFocus(mFocusChangeListener, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
audioManager.setSpeakerphoneOn(false);
通过将audioManager模式更改为MODE_IN_COMMUNICATION(如电话呼叫),音频文件最终输出到手机。但是当我插入耳机时,我没有听到耳机发出的声音,我也没有找到api在AudioManager中手动设置输出路径到手机。
有什么建议吗?