当前位置: 首页 > 知识库问答 >
问题:

按下按钮在耳机和免提电话之间切换

越骏俊
2023-03-14

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

我在显明书中也有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();

共有1个答案

郏志诚
2023-03-14

事实证明,我设置了错误的模式。

这是更新的媒体播放器:

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);

然后它起作用了。因此,请确保媒体播放器和音频管理器处于相同的模式。

 类似资料:
  • 我正在开发一个简单的应用程序,它应该在扬声器电话和有线耳机之间切换,以播放按钮点击事件的音频。我正在尝试使用isWiredHeadsetOn()函数,但它说这对于Android API lvl 5及更高版本来说是不推荐的。那么,我如何通过有线耳机检查当前音频是否正在播放,以便我可以将其重定向到手机扬声器? 注意:我将耳机插入手机的3.5毫米插孔开始我的应用程序。 这是我迄今为止对代码的尝试: 但是

  • 我有一些问题与内置的Android按钮栏样式。在给我的每个按钮宽度0和重量1之后,两个按钮之间仍然有大约1px的间隙(见图)。 消除这种差距的最好方法是什么?为什么它一开始就在那里?

  • 在我的Android应用程序中,我有一个带有几个按钮的导航抽屉,这些按钮可以打开具有相关布局的不同片段。 其中一个按钮应该调用理论上应该执行电话拨号的功能。好像就是不行。什么也没有发生,导航抽屉只是关闭。我已经在清单中实现了这个权限,它应该可以完成权限方面的工作: 我的代码根据导航抽屉中的按钮事件执行代码段,如下所示: 最后但并非最不重要的一点是,执行电话呼叫的功能如下所示;我必须指出,如果我没有

  • 我的web应用程序由各种面板和仪表板组成,仪表板上有访问每个面板的按钮。因此,每个按钮都是专用面板和主面板之间的切换。 例如,如果我们有3个面板,panel1是默认的一个,另外两个按钮用于在其他两个面板和默认面板之间切换: 应在面板1和面板2之间切换 应在面板1和面板3之间切换 我几乎已经实现了,但是我的代码显示了panel2和panel3重叠。 所以我想让按钮1负责在面板1和面板2之间切换。和按

  • 我使用MediaPlayer通过< code>AsyncTask播放音频,并使用< code>AudioManager设置流。按下特定按钮时,我调用< code>AudioManager的< code>setSpeakerPhoneOn()进行切换,但它不会切换到耳机扬声器。我的音频总是通过主扬声器播放。 我尝试了这些解决方案(如下面的代码所示),但都不起作用: 按下按钮即可在听筒和免提电话之间切

  • 如何在按钮中显示向上箭头符号?分别,我希望它在单击向下箭头时发生更改。我该怎么做?? 我试过了,但是。。。。