检测耳机是否插入Android设备。

如何确定耳机是否插入Android设备?

Solutions Collecting From Web of "检测耳机是否插入Android设备。"

当你说“耳机”,你的意思是“有线耳机”? 如果是这样,有一个意图检测是否被插入或拔出: ACTION_HEADSET_PLUG

要检查状态,可以使用AudioManager.isWiredHeadsetOn() ,但如果还有蓝牙耳机,则返回false,并将audio路由到该位置。

您可以使用广播接收机。

所以,你可以在“AndroidManifest.xml”中编写这段代码

 <receiver android:name="com.juno.brheadset.HeadsetStateReceiver"> <intent-filter> <action android:name="android.intent.action.HEADSET_PLUG"/> </intent-filter> </receiver>--> 

但是,这是行不通的。 当操作系统发送这个“HEADSET_PLUG”的意图,操作系统设置标志“Intent.FLAG_RECEIVER_REGISTERED_ONLY”所以,你应该写下面的代码在Activity或Service类而不是“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 ); } 

我希望这篇文章能帮助你。 再见!

这是Android SDK Source的“HeadsetObserver.java”的一部分。

 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); } } 

AudioManager.isWiredHeadsetOn()总是返回false因为它需要用户权限MODIFY_AUDIO_SETTINGS

我花了好几天的时间find答案。 在官方文档中没有关于这方面的信息。 而且这个bug已经在BugTracker注册了。

这应该可以帮助你: http : //developer.android.com/reference/android/content/Intent.html#ACTION_HEADSET_PLUG