首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查和重定向音频之间的有线耳机和扬声器电话?

如何检查和重定向音频之间的有线耳机和扬声器电话?
EN

Stack Overflow用户
提问于 2014-01-06 10:29:26
回答 2查看 6K关注 0票数 3

我正在开发一个简单的应用程序,应该切换之间的扬声器电话和有线耳机播放音频按钮点击事件。我正在尝试使用isWiredHeadsetOn()函数,但是它说这对于Android 5以后是不可取的。那么,如何检查当前音频是否正在通过有线耳机播放,以便将其重定向到电话扬声器?

备注:,我开始我的应用程序的耳机插入3.5mm插孔的手机。

到目前为止,这是我对代码的尝试:

代码语言:javascript
复制
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,仅此而已。它不会在两者之间切换。

谁能帮我把这件事做好。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-01-06 10:53:38

您必须为ACTION_HEADSET_PLUG意图注册一个接收器,并创建一个接收类来捕获该广播,从而可以实现您自己的逻辑please check this

票数 1
EN

Stack Overflow用户

发布于 2016-03-21 12:53:56

代码语言:javascript
复制
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();
                }
            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20947960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档