How can I determine whether a headset is plugged into an Android device or not?
AudioManager audioManager = (AudioManager)getSystemService(Context. AUDIO_SERVICE); audioManager. isWiredHeadsetOn(); (Don't worry about the deprecation, it's still usable for ONLY checking if the headset are plugged in.)
DC resistance measurement between the microphone pin and the ground pin of the socket can be used to detect the kind of device plugged in - it will be 0 Ohm for a headphone, infinitely high for no device connected, and about 2 kOhm thereabouts for a headset with microphone.
Using Bluetooth is safe by touching it and holding it. Tap a smartphone with an attached Bluetooth device on the list of paired devices. Once the phone and Bluetooth device are connected, the connected vehicle is labeled connected.
You can use the broadcast receiver.
So, You might write this code in "AndroidManifest.xml"
<receiver android:name="com.juno.brheadset.HeadsetStateReceiver"> <intent-filter> <action android:name="android.intent.action.HEADSET_PLUG"/> </intent-filter> </receiver>-->
But, This doesn't work. When OS send this "HEADSET_PLUG" intent, OS set the flag "Intent.FLAG_RECEIVER_REGISTERED_ONLY" So, You should write the code like below in Activity or Service class instead of "AndroidManifest" things.
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 ); }
I hope this article help you. Bye!
This is the part of "HeadsetObserver.java", Android SDK Source.
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); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With