2011-09-28 66 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