【问题标题】:How to disable the wired headset programmatically in Java如何在 Java 中以编程方式禁用有线耳机
【发布时间】:2014-01-06 12:10:33
【问题描述】:

请在此处参考我的问题。这个问题是对此的延伸:

How to check and redirect audio between wired headset and speaker phone?

我能够通过包含权限部分解决我的问题

  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

在我的 Android Manifest 中查看同一段代码。现在,我可以启用和禁用手机扬声器,但我无法以编程方式关闭我的有线耳机连接,当有线耳机仍然物理连接到手机时

有人可以帮我吗?我可以使用特定意图来禁用启用有线耳机连接吗?

【问题讨论】:

  • 假设您插入耳机是因为您想使用它。因此耳机具有比内置音频设备更高的路由优先级(除了在少数特殊情况下,例如在语音通话期间启用免提模式时)。应用程序无法以编程方式“拔出”耳机。
  • 好的,但我可以禁用耳机连接本身(以编程方式)吗?
  • 或者我可以选择性地将路由到耳机的音频静音吗?查看我最近的问题:stackoverflow.com/questions/20965530/…
  • “好的,但是我可以禁用耳机连接本身(以编程方式)吗?”。就像我说的; “应用程序无法以编程方式“拔出”耳机”。换句话说,“不”。
  • 但市场上已有某些应用程序执行此功能,例如SoundAbout android 应用程序。 play.google.com/store/apps/… 。知道他们是怎么做到的吗?

标签: android audio soundpool android-audiomanager


【解决方案1】:

我在网上找了解决办法,发现了一些东西

private class MusicIntentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
            int state = intent.getIntExtra("state", -1);
            switch (state) {
                case 0:
                    audioManager.setSpeakerphoneOn(true);
                    break;
                case 1:
                    audioManager.setSpeakerphoneOn(false);
                    break;
                default:
                    audioManager.setSpeakerphoneOn(true);
            }
        }
    }
}

希望对你有帮助

如果你想访问该网站,这里是link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多