2011-08-26 13 views
2

android.intent.action.MEDIA_BUTTONをリッスンするbroadcastreceiverを作成し、それからextra_key_eventを取得してそれに応じて動作させたかったのです。どういうわけか、受動的な行動は行われません。私のマニフェストにandroid broadcastreceviver onreceiveアクションが実行されていません

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

受信機

私broadcastreceiverで

私は音量ダウンキーを押したときしかし、何も表示されない
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

関連する問題