私の Android アプリケーションでは、ユーザーがアルバム、アーティスト、プレイリストを選択し、デフォルトのメディア プレーヤーでそれらを再生するインテントを送信できるようにしたいと考えています。
標準的な方法で ID をフェッチします。
final Uri exAudioUri = Uri.parse("content://com.google.android.music.MusicContent/playlists");
final String[] proj = { MediaStore.Audio.Playlists._ID, MediaStore.Audio.Playlists.NAME };
final Cursor musiccursor = ctx.getContentResolver().query(exAudioUri, proj, null, null, null);
String name = null;
String id = null;
if (musiccursor != null && musiccursor.getCount() > 0) {
while (musiccursor.moveToNext()) {
name = musiccursor.getString(musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.NAME));
id = musiccursor.getString(musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists._ID));
プレイリストについては、次の意図を使用しています。
Intent playMediaIntent = new Intent(Intent.ACTION_VIEW);
playMediaIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
playMediaIntent.setType(MediaStore.Audio.Playlists.CONTENT_TYPE);
playMediaIntent.putExtra("playlist", playlistID);
Google Play ミュージック アプリはこれを傍受し、プレイリストを正常に再生します。
アルバムに対して同じことをしようとすると、アクティビティが見つからないという例外が発生します。
Intent playMediaIntent = new Intent(Intent.ACTION_VIEW);
playMediaIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//playMediaIntent.setType("vnd.android.cursor.dir/track");
playMediaIntent.setType(MediaStore.Audio.Albums.CONTENT_TYPE);
//playMediaIntent.setData(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
playMediaIntent.putExtra("album", albumID);
これらは文書化されていない方法であり、変更される可能性があることは知っていますが、ユーザーが既にお気に入りを選択している場合、独自のメディアプレーヤー全体を実装する必要はありません....
メディア プレーヤーがインターセプトする「標準」コードを提案できる人はいますか?
または、アルバム (またはアーティスト) からすべての曲を取得し、再生またはキューに入れるトラック URI の配列を含むデータを含むインテントを送信する方法はありますか??
これでGoogle / Stackoverflowの奥深くに行って、空白を描きました...
助けてください!よろしくお願いします。