this is a tricky point, but you can use BroadCast, as the following work well with me in Activities
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myReceiver = new HeadSetReceiver(); }
and in onResume () the method will register your broadcast
public void onResume() { IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); registerReceiver(myReceiver, filter); super.onResume(); }
then announce your BroadCast in your activity
private class HeadSetReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) { int state = intent.getIntExtra("state", -1); switch (state) { case 0: Log.d(TAG, "Headset unplugged"); break; case 1: Log.d(TAG, "Headset plugged"); break; } } } }
Hope this helps,
Mohamed hussien
source share