gpt4 book ai didi

android - 按下按钮时在听筒和扬声器之间切换

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:03 25 4
gpt4 key购买 nike

我正在尝试通过在两者之间切换按钮来播放扬声器和听筒的音频。问题是我试图将音频默认为从耳机播放,但没有任何结果。然后,当我按下按钮切换到扬声器时,仍然没有播放音频。我正在从本地原始文件播放。

我在 list 中也有 android.permission.MODIFY_AUDIO_SETTINGS。

这是我的代码:

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

context = getActivity().getBaseContext();

am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

am.setMode(AudioManager.MODE_IN_CALL);
am.setSpeakerphoneOn(false);
am.setBluetoothScoOn(true);
speakerON = false;
}

@Override
public void onClick(View v)
{
switch (v.getId())
{

case R.id.buttonSpeaker:
if(!speakerON)//speaker off
{
speakerON = true;
am.setMode(AudioManager.MODE_NORMAL);
am.setSpeakerphoneOn(true);
am.setBluetoothScoOn(false);
speaker.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.ic_lock_silent_mode_off, 0, 0, 0);
}
else
{
speakerON = false;
am.setMode(AudioManager.MODE_IN_CALL);
am.setSpeakerphoneOn(false);
am.setBluetoothScoOn(true);
speaker.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.ic_lock_silent_mode, 0, 0, 0);
}

break;

}
}

这是我设置 MediaPlayer 的方式:

mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), R.raw.test_message);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
mediaPlayer.start();

最佳答案

原来是我模式设置错了。

这是更新后的媒体播放器:

mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), R.raw.test_message);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.start();

然后我将音频管理器的模式设置为:

context = getActivity().getBaseContext();

am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_CALL);
am.setSpeakerphoneOn(false);

然后就成功了。因此,请确保媒体播放器和音频管理器处于相同模式。

关于android - 按下按钮时在听筒和扬声器之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com