タイトルは、このサウンドを実際よりもはるかに単純にします..ほとんどの音楽プレーヤーを一時停止するインテントをブロードキャストしようとしています。
私はこれで 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);
そして、それは機能します。ヘッドフォンの再生/一時停止ボタンをサポートする他のほとんどの音楽プレーヤーと同様に、ストックメディアプレーヤーを希望どおりに一時停止します. しかし、何らかの理由で、ストックミュージックプレーヤーで1回しか機能しません。ボタンを押してこれを呼び出すと、音楽が一時停止します。もう一度再生を開始して、もう一度一時停止ボタンを押しても、機能しません。デバイスを再起動すると、再び機能します。しかし、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 を機能させるのを手伝っていただければ、素晴らしいです。まったく別のソリューションがあれば、素晴らしいです。私はそれを機能させたいだけです!ありがとう!