Androidまたは他のプレーヤーのデフォルトの音楽プレーヤーを制御する方法は? 制御とは、一時停止、再生、次へなどを意味します。サービスをバインドする必要がありますか? を使用しようとしましたIMediaPlaybackService
が、機能していません。Androidマーケットで音楽プレーヤーを制御するアプリを見たので、確かに抜け道があります。何か案が?
質問する
20185 次
7 に答える
11
ブロードキャスト レシーバーへの送信Intent
に関する問題は、ユーザーが少なくとも 1 回はミュージック プレーヤーを開く必要があることです。また、多くのサード パーティのミュージック プレーヤーでは機能しません。
以下のコードは、すべての音楽プレーヤーで機能します。
long eventtime = SystemClock.uptimeMillis();
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);
Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent upEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
sendOrderedBroadcast(upIntent, null);
/*NEXT*/
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);
/*PREVIOUS*/
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);
このコードは、Sony、Htc、Samsung デバイスでテストしました。
このコードは、ハンズフリー (イヤホン) の再生/一時停止ボタン アクションを模倣します。
于 2013-09-20T05:59:06.110 に答える
6
音楽プレーヤー (現在再生中のプレーヤー) を制御したい場合は、それに KeyEvents を送信する方法があります。
if (mAudioManager == null) mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY);
mAudioManager.dispatchMediaKeyEvent(event);
これはより安全な方法です。通常、keyEvent をブロードキャストすると、一度に複数のプレイヤーがプレイされる可能性があります。
注: minSdk 19 以上が必要です。
于 2016-11-08T17:45:33.623 に答える