如何確定耳機是否插入Android設備?檢測耳機是否插入Android設備。
回答
當你說「耳機」,你的意思是「有線耳機」?如果是這樣,有意圖檢測是否正在插入或拔出插入:ACTION_HEADSET_PLUG
。
要檢查狀態,可以使用AudioManager.isWiredHeadsetOn()
,但如果還有藍牙耳機,則可能會返回錯誤,並且將音頻路由到該位置。
Hello Mike,如果有人使用Blutooth耳機,我該怎麼辦? – 2011-06-06 08:00:15
AudioManager.isWiredHeadsetOn()似乎總是返回false(在幾個薑餅設備測試),在耳機是否被堵塞。如果你能提供一個工作代碼示例,這將是巨大的。 – 2012-05-01 18:39:31
@ChadSchultz您需要在清單中添加權限MODIFY_AUDIO_SETTINGS。然後只有它會返回正確的狀態。 – 2014-02-13 13:56:49
您可以使用廣播接收器。
所以,你可能會在 「AndroidManifest.xml中」
<receiver android:name="com.juno.brheadset.HeadsetStateReceiver">
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG"/>
</intent-filter>
</receiver>-->
但寫這樣的代碼,這是行不通的。當OS發出這個「HEADSET_PLUG」的意圖,OS設置標誌「Intent.FLAG_RECEIVER_REGISTERED_ONLY」所以,你應該寫在活動或服務類,而不是「AndroidManifest」之類的東西下面的代碼。
public class BRHeadsetActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
HeadsetStateReceiver receiver = new HeadsetStateReceiver();
registerReceiver(receiver, receiverFilter);
}
我希望這篇文章對您有所幫助。再見!
這是 「HeadsetObserver.java」,那麼Android SDK源代碼的一部分。
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);
}
}
-cmcromance你能解釋我的代碼嗎? – Sumit 2012-07-30 07:54:25
@Sumit對不起。我現在看到了你的重播。我可以爲你解釋我的代碼嗎? :) – cmcromance 2012-10-08 00:43:35
@Sumit好的。我想你不明白這一點。如果您添加「FLAG_RECEIVER_REGISTERED_ONLY」意圖進行廣播,那麼只有當我在「AndroidManifest.xml」上的代碼上執行「registerReceiver(...)」時,才能收到廣播。 – cmcromance 2012-10-08 00:57:07
AudioManager.isWiredHeadsetOn()
總是返回false
,因爲它需要用戶的許可MODIFY_AUDIO_SETTINGS
。
我花了好幾天,而找到答案。在官方文檔中沒有關於此的信息。而這bug
已經在BugTracker
註冊。
- 1. 檢測耳機是否插入iOS設備
- 2. 檢測耳機是否插入Java耳機插孔
- 3. 檢測耳機是否插入iPhone
- 4. 檢測耳機是否插入iPhone/iPod
- 5. Android:檢查是否插入了耳機
- 6. 通過VBScript檢測耳機是否插入或未插入
- 7. 檢查耳機是否已插入
- 8. 如何檢查耳機是否插入?
- 9. 檢測設備是否在Daydream VR耳機
- 10. 使用Java來檢測設備是否插入到計算機
- 11. Android:檢測耳機以及耳機?
- 12. 檢查耳機是否在Android手機
- 13. 您能否告訴耳機/耳機是否插入WP8
- 14. 檢測耳機是否有麥克風
- 15. 檢測Android設備是否是用java
- 16. 如何檢測在Android 8.0上插入耳機的targetSDKVersion> = 26
- 17. 檢查應用程序啓動時是否插入了耳機
- 18. C#檢測是否插入了USB設備
- 19. iPhone中的插孔/耳機檢測
- 20. 如何檢測WinRT中未插入的耳機插孔?
- 21. 如何在Android中檢測BT耳機或有線耳機
- 22. 檢測按鈕是否按下帶有兩個耳機的頭戴式耳機?
- 23. Python腳本如何檢測耳機/耳機是否連接到PC?
- 24. Android中的USB type-c耳機檢測
- 25. [Android]耳機插入時只有耳機聲音
- 26. 使用耳機檢測用戶輸入
- 27. Eclipse Android插件設備檢測
- 28. iPhone的耳機插孔可以用作設備的輸入嗎?
- 29. Android的主機設備檢測
- 30. 檢測Android設備
我開發一個應用程序......我需要知道它肯定....用戶也可以欺騙,如果我提示他我編輯你的問題的問題 – 2011-06-06 07:47:41
,如果它不是你要問,請糾正它。 – Mudassir 2011-06-06 08:37:04
@Mudassir感謝您更正:) – 2011-06-06 08:51:26