我正在开发一个简单的应用程序,应该切换之间的扬声器电话和有线耳机播放音频按钮点击事件。我正在尝试使用isWiredHeadsetOn()函数,但是它说这对于Android 5以后是不可取的。那么,如何检查当前音频是否正在通过有线耳机播放,以便将其重定向到电话扬声器?
备注:,我开始我的应用程序的耳机插入3.5mm插孔的手机。
到目前为止,这是我对代码的尝试:
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消息SpeakerPhone,仅此而已。它不会在两者之间切换。
谁能帮我把这件事做好。谢谢。
发布于 2014-01-06 10:53:38
您必须为ACTION_HEADSET_PLUG意图注册一个接收器,并创建一个接收类来捕获该广播,从而可以实现您自己的逻辑please check this。
发布于 2016-03-21 12:53:56
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();
}
}
});https://stackoverflow.com/questions/20947960
复制相似问题