一般采用的是动态监听的方式来实现的:
package com.renhui.ej;import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.Toast;public class MainActivity extends AppCompatActivity {HeadsetPlugReceiver headsetPlugReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);registerHeadsetPlugReceiver(); // 注册监听 }private void registerHeadsetPlugReceiver() {headsetPlugReceiver = new HeadsetPlugReceiver();IntentFilter filter = new IntentFilter();filter.addAction("android.intent.action.HEADSET_PLUG");registerReceiver(headsetPlugReceiver, filter);}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();unregisterReceiver(headsetPlugReceiver); //注销监听 }class HeadsetPlugReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubif (intent.hasExtra("state")) {if (intent.getIntExtra("state", 0) == 0) {Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show();} else if (intent.getIntExtra("state", 0) == 1) {Toast.makeText(context, "headset connected", Toast.LENGTH_LONG).show();}}}} }