2011-08-26 4 views
2

android.intent.action.MEDIA_BUTTON을 수신하고 그에 따라 extra_key_event를 얻는 broadcastreceiver를 만들고 싶습니다. 어쨌든 onreceive 행동은 수행되지 않습니다. 내 매니페스트에android broadcastreceviver onreceive action not performed

:

receiver android:name="MediaButtonReceiver" 
intent-filter 
action android:name="android.intent.action.MEDIA_BUTTON" 
intent-filter 

수신기

내 브로드 캐스트 리시버에서

:

내가 볼륨 작게 키를 누를 때, 아무것도 표시되지 않습니다
public class MVCS extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { 
     /* handle media button intent here by reading contents */ 
     /* of EXTRA_KEY_EVENT to know which key was pressed */ 

     KeyEvent ke = (KeyEvent)intent.getExtras().get(Intent.EXTRA_KEY_EVENT); 
     if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { 
      Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

.

도움이 될 것입니다.

답변

0

registerReceiver() 메소드를 사용하여 활동에 브로드 캐스트 리시버를 등록해야합니다. 코드가 여기 완성되지 않았으므로 MVCS 클래스를 인스턴스화 한 후에 정확히 어떻게 설명 할 수는 없지만 다음과 같이 등록해야합니다.

MyActivity.registerReceiver (myBroadcastReceiver, MediaButtonReceiver);

더 좋은 방법은 수신기를 OnStart()에 등록하고 OnStop()에 등록을 취소하는 것입니다.

+0

도움 주셔서 감사합니다. 내 활동이 실행 중이 지 않을 때도 방송 수신기가 백그라운드에서 계속 서비스처럼 실행됩니까? – kevdliu

+0

브로드 캐스트 수신기는 서비스와 같지 않으며 계속해서 실행되는 것은 하나도 없으며 일부 이벤트에 연결하는 수신기입니다. 사건이 해고되었을 때만 실행되며 응답이 빠르지 않다는 것을 명심하십시오. 때때로 청취자가 해고 될 때까지 300 ~ 400mS가 걸립니다. – ruhalde