当前位置: 首页 > 知识库问答 >
问题:

Intent.ACTION_HEADSET_PLUG的状态额外总是在1上返回

颜嘉福
2023-03-14

我使用BroadcastReceiver是为了知道耳机是否插到设备上,但在任何情况下,“状态”都会立即返回到1(已插)。

以下是我的代码:

public class Class {

  boolean isHeadsetOn;
  IntentFilter headsetReceiverFilter;
  HeadsetPluggedReceiver headsetReceiver;

  public Class(Context context) {
    this.headsetReceiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
    this.headsetReceiver = new HeadsetPluggedReceiver();
    context.registerReceiver(this.headsetReceiver, this.headsetReceiverFilter);
  }

  private class HeadsetPluggedReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
      switch(intent.getIntExtra("state", -1)) {
        case 0:
          Synthesizer.this.isHeadsetOn = false;
          Log.d("onreceive", "off");
        case 1:
          Synthesizer.this.isHeadsetOn = true;
          Log.d("onreceive", "on");
        default:
          // shit
      }
    }

  }

}

这是我的日志:

// not plugged. plugging in
onreceive | on
// unplugging
onreceive | off
onreceive | on
// plugging in again
onreceive | on
// plugging off again
onreceive | off
onreceive | on

我该如何解决这个问题?

提前感谢。

共有2个答案

华知
2023-03-14

**应为:* *

@Override
public void onReceive(Context context, Intent intent) {
  switch(intent.getIntExtra("state", -1)) {
    case 0:
      Synthesizer.this.isHeadsetOn = false;
      Log.d("onreceive", "off");
      break; //<---------
    case 1:
      Synthesizer.this.isHeadsetOn = true;
      Log.d("onreceive", "on");
      break; //<---------
    default:
      // shit
  }
}

}
阙阳
2023-03-14

您需要在开关案例中使用中断语句。现在你的逻辑正在下降到案例1。

 类似资料:
  • 我知道这个问题和下面的问题是重复的。 我打开了许多选项卡,但结果getWindowHandles()总是返回1。

  • 问题内容: 结果始终为1: 我在phpMyAdmin中运行了$ sql查询,它返回3,所以查询不是问题。$ vote_total全局初始化为0,因此1来自某个地方。我还需要提供什么其他信息来帮助我? 谢谢,瑞安 问题答案: 返回选定的行数,而不是特定行的字段。使用来获取您与您的查询选择的行: 您还可以用来获取一行并获取特定字段: 这将获取第一行(从零开始)并返回第一字段(从零开始)。

  • 问题 你的代码中需要依赖到回调函数的使用(比如事件处理器、等待后台任务完成后的回调等), 并且你还需要让回调函数拥有额外的状态值,以便在它的内部使用到。 解决方案 这一小节主要讨论的是那些出现在很多函数库和框架中的回调函数的使用——特别是跟异步处理有关的。 为了演示与测试,我们先定义如下一个需要调用回调函数的函数: def apply_async(func, args, *, callback):

  • 问题内容: 我正在尝试使用BeautifulSoup从html文档中获取一些文本。在我看来,这很奇怪,它产生了一个奇怪而有趣的结果:在某一点之后,汤在文本中充满了多余的空格(空格将每个字母与下一个字母分隔开)。我试图在网络上搜索以找到原因,但是我只遇到了有关相反错误的一些消息(根本没有空格)。 您对它为什么会发生以及如何解决此问题有任何建议或提示吗? 这是我创建的非常基本的代码: 这是从结果中提取

  • 我正在使用AWS Amplify在iOS和Android上构建一个应用程序。我有一个lambda表达式,它接受经度、纬度、用户名和对象id,并返回一个布尔值,告诉我用户是否在物理上接近该对象。 它完美地工作在我的iOS应用程序,我得到或取决于用户位置,但在Android上,我总是得到作为响应。 这是触发lambda的函数: 当我打印日志的参数发送到lambda一切正常,正确的值被发送。 这是我的回