タイトルは、このサウンドをはるかに簡単にします。私は、ほとんどの音楽プレーヤーを一時停止する意図をブロードキャストしようとしています。Androidでシステム全体を確実に一時停止する
私は、私はそれがこれでKEYCODE_MEDIA_PLAY_PAUSEをブロードキャストするためにKeyEventを作成し使用することができます知っている:
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);
ctx.sendOrderedBroadcast(downIntent, null);
そして、それが動作します。ヘッドフォンの再生/一時停止ボタンをサポートする他のほとんどの音楽プレーヤーと一緒に、在庫メディアプレーヤーを私が望む方法で一時停止します。しかし何らかの理由で、株式音楽プレーヤーで一度しか動作しません。私はこれを呼び出すためにボタンを押すことができ、それは音楽を一時停止するでしょう。もう一度再生を開始して一時停止ボタンをもう一度押すと、機能しません。デバイスを再起動すると、もう一度動作します。しかし、Pandoraでは、それは一貫して動作するはずです。
私はそれを回避でき、KeyEventを使用せずに一時停止できると思っていました。私はAudioManagerと別の目的でこれを試しました:
AudioManager mAudioManager = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE);
if (mAudioManager.isMusicActive()) {
Intent mediaIntent = new Intent("com.android.music.musicservicecommand");
mediaIntent.putExtra("command", "pause");
ctx.sendBroadcast(mediaIntent);
}
これはまた動作し、一貫して動作します。しかし、本質的に壊れやすいのは、Androidの音楽プレーヤーにインテントを直接送信することで、それが動作する唯一のプレーヤーだからです。 Pandora、Last.FMなどのコントロールはありません。ほとんどの音楽プレーヤーで動作する必要があります。
私は次のどこに行くのか分かりません。私はそれが働く限り、私がどのような解決方法を与えられているのかぞっとするつもりはない。まったく別のソリューションがあれば、KeyEventの仕事を幻想的にする手助けができれば、素晴らしい。私はそれがうまくいってほしい!ありがとう!
あなたがここで行うことは、「本質的に壊れやすい」ものです。さらに、このイベントを完全に無視するメディアプレーヤーがたくさんあります。そして、いつかOSが偽の 'ACTION_MEDIA_BUTTON'イベントを他の類似した偽のイベントをブロックするようにブロックすることは完全に可能です。独自のメディアプレーヤーを作成する場合は、オーディオフォーカスを取得するためにAudioManagerのオーディオフォーカス機能を使用します。 – CommonsWare
私は自分のメディアプレーヤーを実際に書いているわけではありません。 Playストアには、設定した時間が経過しても音楽を停止する完全機能のアプリがたくさんあることはわかっていますが、そのうちのどれにも特に満足しているわけではありません。私はちょうど私自身のテイクを書くことを試みているだけで、ほとんどの音楽アプリを一時停止できる必要があります。 – Geniusdog254