3

BroadcastReceiver を使用してメディア ボタンの 1 つをキャプチャするサービスを作成しました。音楽プレーヤーが非アクティブな場合にのみ、メディア ボタン イベントをキャプチャできます。音楽プレーヤーがアクティブなときにメディアボタンイベントをキャプチャするにはどうすればよいですか..!

マイアクティビティ:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_and_activation_view);

Log.d("MR", "onCreate - " + getIntent().getAction());

    AudioManager mAudioManager  = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
      ComponentName mediaButtonReceiver = new ComponentName(getPackageName(), HeadsetControlEventReceiver.class.getName());
      mAudioManager.registerMediaButtonEventReceiver(mediaButtonReceiver);
}

MyBroadcastReceiver:

public class HeadsetControlEventReceiver extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {
    try{
        KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);

        if ((event != null) && (event.getKeyCode() == KeyEvent.KEYCODE_HEADSETHOOK)) {

マニフェスト.Xml

  <receiver 
   android:name=".HeadsetControlEventReceiver" 
   android:enabled="true">
   <intent-filter android:priority="2147483647">
         <action android:name="android.intent.action.MEDIA_BUTTON"/>
        </intent-filter>
  </receiver>
4

1 に答える 1

-1

これを登録して音楽プレーヤーを起動すると、音楽プレーヤーが優先されます。次に、再登録する必要があります。クールなポーリングメカニズムはどうですか。

于 2013-01-24T15:31:05.800 に答える