2011-09-28 64 views
0

我正在做一些测试Intent.ACTION_HEADSET_PLUGACTION_HEADSET_PLUG未记录额外奇怪的“状态”?

给予的事实,下面的代码应该是谁给的答复(从com.android.server.HeadsetObserver类2.2.1 R1)的一个:

private final void sendIntent(int headset, int headsetState, int prevHeadsetState, String headsetName) { 
    if ((headsetState & headset) != (prevHeadsetState & headset)) { 
     // Pack up the values and broadcast them to everyone 
     Intent intent = new Intent(Intent.ACTION_HEADSET_PLUG); 
     intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); 
     int state = 0; 
     int microphone = 0; 

     if ((headset & HEADSETS_WITH_MIC) != 0) { 
      microphone = 1; 
     } 
     if ((headsetState & headset) != 0) { 
      state = 1; 
     } 
     intent.putExtra("state", state); 
     intent.putExtra("name", headsetName); 
     intent.putExtra("microphone", microphone); 

     if (LOG) Slog.v(TAG, "Intent.ACTION_HEADSET_PLUG: state: "+state+" name: "+headsetName+" mic: "+microphone); 
     // TODO: Should we require a permission? 
     ActivityManagerNative.broadcastStickyIntent(intent, null); 
    } 
} 

及文档中他们说:状态 - 0表示拔出,1表示插入。

我通过插入两个不同的耳机奇怪得到两个不同的状态:

0 =拔出

1 =耳机和麦克风

2 =耳机没有麦克风


问题是:国家2(二)从哪里来?有人能够启发我吗?

谢谢

+0

你正在测试什么设备?这可能是一个特定于设备的变化/ bug /无论如何。 – CommonsWare

+0

HTC Desire Android版本2.2,不幸是我拥有的唯一物理设备。 – BrainCrash

回答

1

我在我的一个应用程序中使用了这个额外的状态。其中一个耳机有一个麦克风,另一个没有麦克风。另外,还要确保你插上在所有的方式,但不破坏任何东西:)

0 - 不插电在没有连接到设备

1耳机 - 带麦克风的耳机作为有线耳机是有一个麦克风,所以你可以说话和设备使用它作为输入,因为你谈话

2 - 一个没有麦克风的耳机,因为在你的普通旧立体声耳机,你通常会连接到你的立体声系统听音乐

这是非常好的信息,以验证刚刚连接的是您期望的有线耳机能够正确地讲话并被听到。

+0

这与我说的几乎是一回事......我的问题是:州= 2从哪里来?你在什么设备上测试过它? – BrainCrash

+0

对不起,也许这是我深夜很蠢。我在我自己的broadcastreceiver中使用了状态,在我的G2中,我正在监听Intent.ACTION_HEADSET_PLUG并获取额外的“状态”和额外的“麦克风”int。 – Havoc