我正在开发一个简单的应用程序,它应该在扬声器电话和有线耳机之间切换,以播放按钮点击事件的音频。我正在尝试使用isWiredHeadsetOn()函数,但它说这对于Android API lvl 5及更高版本来说是不推荐的。那么,我如何通过有线耳机检查当前音频是否正在播放,以便我可以将其重定向到手机扬声器?
注意:我将耳机插入手机的3.5毫米插孔开始我的应用程序。
这是我迄今为止对代码的尝试:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_audio_re_direct);
redirect = (Button)findViewById(R.id.redirect);
final AudioManager audio =(AudioManager)getApplicationContext().getSystemService(AUDIO_SERVICE);
redirect.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(audio.isWiredHeadsetOn())
{
audio.setWiredHeadsetOn(false);
audio.setSpeakerphoneOn(true);
Toast.makeText(getApplicationContext(), "SpeakerPhone On", Toast.LENGTH_LONG).show();
redirect.setText("Turn on headset");
}
else
{
audio.setSpeakerphoneOn(false);
audio.setWiredHeadsetOn(true);
Toast.makeText(getApplicationContext(), "Wired Headset On", Toast.LENGTH_LONG).show();
redirect.setText("Turn off headset");
}
}
});
}
但是这个应用程序根本不会切换。最初,它检测到有线耳机存在,显示Toast消息扬声器打开,就这样。它不会在两者之间切换。
有人请帮我把这件事做好。谢谢
AudioManager mAudioMgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
mVolumeButton = (Button)findViewById(R.id.btn_Volume);
mVolumeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mAudioMgr.isWiredHeadsetOn()){
mAudioMgr.setWiredHeadsetOn(false);
mAudioMgr.setSpeakerphoneOn(true);
mAudioMgr.setMode(AudioManager.MODE_IN_COMMUNICATION);
Toast.makeText(getApplicationContext(), "SpeakerPhone On", Toast.LENGTH_LONG).show();
}else{
mAudioMgr.setMode(AudioManager.MODE_IN_COMMUNICATION);
mAudioMgr.setSpeakerphoneOn(false);
mAudioMgr.setWiredHeadsetOn(true);
Toast.makeText(getApplicationContext(), "Wired Headset On", Toast.LENGTH_LONG).show();
}
}
});
您必须为ACTION_HEADSET_PLUG意图注册一个接收器,并创建一个接收器类来捕获该广播,您可以从中实现自己的逻辑,请检查此
我试图通过在扬声器和耳机之间切换按钮来播放音频。问题是,我试图将音频默认为从耳机播放,但没有结果。然后,当我按下按钮切换到扬声器时,仍然没有音频播放。我从本地原始文件播放。 我在显明书中也有android.permission.MODIFY_AUDIO_SETTINGS。 以下是我的代码: 以下是我设置 MediaPlayer 的方式:
我试图让用户能够在我的应用程序中切换音频输出,我可以使用AVAudioSession在扬声器和背部之间切换,但我找不到在连接的蓝牙设备和耳机之间切换的方法,以任何顺序。 谢谢你的帮助。
我想使用有线耳机作为的音频源。我阅读了诸如Android之类的问题 - 通过听筒播放音频和Android - 从听筒播放音频。最后我来: 但这不起作用。蓝牙耳机使用方法解决的问题 我没有找到替代< code > audio manager . startbluetoothsco();适用于有线耳机。能否将< code>SpeechRecognizer与有线耳机结合使用?
我创建了语音通话录音应用程序,它与手机的麦克风和听筒配合得很好。但是当插入耳机时,它不能录制音频。我试图将AudioSource更改为AudioSource.default,以为它会自动接受默认音频源。它什么也没记录。
我们正在开发一款需要在iOS中更改音频路由的应用程序。我们需要从麦克风输入中获取一些信息,然后切换到设备的内部麦克风以录制环境声音。 我们从这些页面中看到了两个主题:强制iPhone麦克风作为音频输入,如果耳机已插入,则使用内置麦克风,但我猜根据这种情况,没有任何定论。 现在,代码可以工作,但我们可以选择音频输入的路线。 我们在Apple(Remote IO)提供的留档中没有找到任何内容。 这有什
我使用MediaPlayer通过< code>AsyncTask播放音频,并使用< code>AudioManager设置流。按下特定按钮时,我调用< code>AudioManager的< code>setSpeakerPhoneOn()进行切换,但它不会切换到耳机扬声器。我的音频总是通过主扬声器播放。 我尝试了这些解决方案(如下面的代码所示),但都不起作用: 按下按钮即可在听筒和免提电话之间切