私は、オーディオ デバイス atm を使用するアプリケーション用に、毎分 (Android に存在することを望んでいる「次へ」) 曲を変更する Android 2.1 用のアプリケーションを実行することを計画しています。
Spotifyをバックグラウンドで実行して音楽を再生している場合、プログラムを介して次のトラックに変更できますか?
何か不明な点がありましたらお知らせください。前もって感謝します!
これは少し古い質問であることは知っていますが、ここで言及されているもの以外のものを検索するのに時間がかかりました.
回避策があります - ブロードキャスト メディア ボタン アクション。落とし穴が 1 つあります。レシーバーは、ブロードキャストがシステムからのものか別のアプリからのものかを認識できるため、システム以外のブロードキャストを無視できます。
Intent i = new Intent(Intent.ACTION_MEDIA_BUTTON);
synchronized (this) {
i.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT));
sendOrderedBroadcast(i, null);
i.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_NEXT));
sendOrderedBroadcast(i, null);
}
音楽アプリケーション用のユニバーサル オーディオ トランスポート API は存在しないため、対象とする音楽アプリケーションがサービス バインディングまたはインテントを公開しているかどうかを確認する必要があります。そうでなければ、これを行うことはできません。
システム ミュージック ホームスクリーン ウィジェットは、組み込みのミュージック プレーヤーに次のインテントを送信します。
final ComponentName serviceName = new ComponentName(context,
MediaPlaybackService.class);
intent = new Intent(MediaPlaybackService.NEXT_ACTION);
intent.setComponent(serviceName);
pendingIntent = PendingIntent.getService(context,
0 /* no requestCode */, intent, 0 /* no flags */);
views.setOnClickPendingIntent(R.id.control_next, pendingIntent);
ただし、MediaPlaybackService は明示的なインテントのみを受け入れ、外部からアクセスできないため、音楽アプリ自体に外部パッケージを実装するにはハッカーが必要なようです。ただし、このスレッドは、少しのハッカーで可能であることを示しているようです。
しかし、それでも、Roman が言ったように、すべての音楽プレーヤーがその意図を尊重するわけではありません。Spotify/Pandora/Last.fm 自身に確認し、そのようにバインドできるインテントがあるかどうかを確認する必要があります。