【问题标题】:how to find whether speakerphone is on or not in android如何在android中查找免提电话是否打开
【发布时间】:2011-01-19 03:33:06
【问题描述】:

我需要通过可编程性来确定免提电话是否打开。

我知道无论是否开启,我们都可以使用下面的方法找到。

AudioManager.isSpeakerphoneOn();

在我的情况下,即使它返回错误,即使扬声器以某种方式打开。

我需要知道以下两件事。

1.是否有任何广播动作来查找扬声器状态。

2.有什么办法可以找到免提电话状态变化

【问题讨论】:

  • 您如何获得 AudioManager。我希望你从你的应用程序上下文中得到。 (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);如果是,那么它应该可以工作。 (它是一项系统范围的服务,除非您的应用程序正在处理电话等,否则您不会被要求干预它)
  • 是的,实际上,一旦连接了语音呼叫,我就会启动我的应用程序。在这种情况下,扬声器正在打开。现在有什么与电话有关的事情吗?你能建议一下吗
  • 我认为你应该使用广播接收器,如下图所示:[Ringer mode change listener Broadcast receiver][1] [1]: stackoverflow.com/questions/7483961/…

标签: android


【解决方案1】:

检查以下链接。可能有用。

Turn on speakerphone whenever an outgoing call is made

但该链接不使用广播接收器。它只检查扬声器功能是否在那一刻打开。

【讨论】:

    【解决方案2】:

    你来了

    AudioManager audioManager = (AudioManager) MainActivity.this .getSystemService(Context.AUDIO_SERVICE);
        audioManager.setMode(AudioManager.MODE_IN_CALL);
    
        if(audioManager.isSpeakerphoneOn()){
            audioManager.setSpeakerphoneOn(true);
    
    
        }else if(!audioManager.isSpeakerphoneOn()){
    
    
        }
    

    【讨论】:

      【解决方案3】:

      试试这个扬声器开启功能。

      AudioManager audioManager = (AudioManager) Home.this.getSystemService(Context.AUDIO_SERVICE);
      audioManager.setSpeakerphoneOn(true);
      audioManager.setMode(AudioManager.MODE_IN_CALL);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-27
        • 2016-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多