Android+イヤホン挿抜とイヤホンボタン検出


1.イヤホン挿抜
まずoncreateにreceiverを登録し、
 registerReceiver(headSetReceiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG)); 

次に、ブロードキャスト受信部:
  private final BroadcastReceiver headSetReceiver = new BroadcastReceiver() {
        @Override
         public void onReceive(Context context, Intent intent) {
            
            Log.d(TAG,"into headsetreceiver!");
               String action = intent.getAction();
               
               
               if (action.equals(Intent.ACTION_HEADSET_PLUG)) {
                //headphone plugged
                   if(intent.getIntExtra("state", 0) == 1){
                       //do something
                    Log.d(TAG,"this is headphone plugged");
                    headsetState.setText("    :  ");
                   
                    
                   //headphone unplugged
                   }else{
                       //do something
                    Log.d(TAG,"this is headphone unplugged");
                    headsetState.setText("    :    ");
                   }
               }
         }
 };


 
2.ヘッドホンキー検出
/*      */
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		switch (keyCode) {
		case KeyEvent.KEYCODE_HEADSETHOOK:
			 //DisplayToast("  :   ");
			 headsetState.setText("    :  ,      ");
			break;
		}
		return true;
	}
	public boolean onKeyUp(int keyCode, KeyEvent event) {
		switch (keyCode) {
		case KeyEvent.KEYCODE_HEADSETHOOK:
			 //DisplayToast("  :   ");
			 headsetState.setText("    :  ,      ");
			break;
		}
		return true;
	}

イヤホンのボタンを検出することができて、ネット上である人は以下の方法でイヤホンのボタンを検出することができると言って、しかもN数編を転載しました.やってみたらダメだった...成功した友达がいることを望んで、见た后に私に伝言を残して话して、交流はとても重要です...
    filter    Intent.ACTION_MEDIA_BUTTON


   onReceive      


 final KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event != null && event.getAction() == KeyEvent.ACTION_DOWN){
           //do something         
}  



上記の問題は、放送受信に優先度の概念があることが分かったが、hookはシステムの持参したプレーヤーに切り取られ、使い終わった後に破棄されたため、私のアプリケーションはhookボタンを傍受できず、放送受信の優先度を上げればシステムは1000私の1000+1である.  ok!