【问题标题】:Intent.ACTION_HEADSET_PLUG's state extra always returns on 1Intent.ACTION_HEADSET_PLUG 的额外状态总是返回 1
【发布时间】:2014-07-06 14:36:25
【问题描述】:

我正在使用 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

我该如何解决这个问题?

提前谢谢你。

【问题讨论】:

    标签: android android-intent android-broadcast


    【解决方案1】:

    你需要在你的 switch case 中使用 break 语句。现在你的逻辑正在落入案例 1。

    【讨论】:

      【解决方案2】:

      **应该是:**

      @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
        }
      }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2017-08-10
        • 1970-01-01
        • 1970-01-01
        • 2016-02-07
        • 2015-08-27
        • 2016-04-18
        • 1970-01-01
        • 2022-11-26
        • 1970-01-01
        相关资源
        最近更新 更多