protected ParcelFileDescriptor openAudioThumbnailCleared(long id, CancellationSignal signal) throws FileNotFoundException { final ContentResolver resolver = getContext().getContentResolver(); Cursor cursor = null; try { cursor = resolver.query(Audio.Albums.EXTERNAL_CONTENT_URI, AudioThumbnailQuery.PROJECTION, Audio.Albums._ID + "=" + id, null, null); if (cursor.moveToFirst()) { final String data = cursor.getString(AudioThumbnailQuery._DATA); return ParcelFileDescriptor.open( new File(data), ParcelFileDescriptor.MODE_READ_ONLY); } } finally { IoUtils.closeQuietly(cursor); } return null; }
public static PduPart constructPartFromUri(Context context, Uri uri) throws IOException, MediaTooLargeException { PduPart part = new PduPart(); assertMediaSize(context, uri); Cursor cursor = null; try { cursor = context.getContentResolver().query(uri, new String[]{Audio.Media.MIME_TYPE}, null, null, null); if (cursor != null && cursor.moveToFirst()) part.setContentType(cursor.getString(0).getBytes()); else throw new IOException("Unable to query content type."); } finally { if (cursor != null) cursor.close(); } part.setDataUri(uri); part.setContentId((System.currentTimeMillis()+"").getBytes()); part.setName(("Audio" + System.currentTimeMillis()).getBytes()); return part; }
private Cursor getQueryCursor(AsyncQueryHandler async, String filter) { if (filter == null) { filter = ""; } String[] ccols = new String[] { BaseColumns._ID, Audio.Media.MIME_TYPE, Audio.Artists.ARTIST, Audio.Albums.ALBUM, Audio.Media.TITLE, "data1", "data2" }; Uri search = Uri.parse("content://media/external/audio/search/fancy/" + Uri.encode(filter)); Cursor ret = null; if (async != null) { async.startQuery(0, null, search, ccols, null, null, null); } else { ret = MusicUtils.query(this, search, ccols, null, null, null); } return ret; }
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { if (Audio.Artists.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_artists); getMenuInflater().inflate(R.menu.music_context_artistimage, menu); } else if (Audio.Albums.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_albums); getMenuInflater().inflate(R.menu.music_context_albumimage, menu); } else if (Playlists.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_playlist); getMenuInflater().inflate(R.menu.music_context_playlist_genreimage, menu); } else{ menu.setHeaderTitle(R.string.image_edit_genre); getMenuInflater().inflate(R.menu.music_context_playlist_genreimage, menu); } }
public void onSearchWeb(){ String query = ""; if (Audio.Artists.CONTENT_TYPE.equals(mimeType)) { query = getArtist(); } else if (Audio.Albums.CONTENT_TYPE.equals(mimeType)) { query = getAlbum() + " " + getArtist(); } else if (Playlists.CONTENT_TYPE.equals(mimeType)) { query = bundle.getString(PLAYLIST_NAME); } else{ Long id = bundle.getLong(BaseColumns._ID); query = MusicUtils.parseGenreName(this, MusicUtils.getGenreName(this, id, true)); } final Intent googleSearch = new Intent(Intent.ACTION_WEB_SEARCH); googleSearch.putExtra(SearchManager.QUERY, query); startActivity(googleSearch); }
private boolean makeAutoShuffleList() { ContentResolver res = getContentResolver(); Cursor c = null; try { c = res.query(Audio.Media.EXTERNAL_CONTENT_URI, new String[] { BaseColumns._ID }, AudioColumns.IS_MUSIC + "=1", null, null); if (c == null || c.getCount() == 0) { return false; } int len = c.getCount(); long[] list = new long[len]; for (int i = 0; i < len; i++) { c.moveToNext(); list[i] = c.getLong(0); } mAutoShuffleList = list; return true; } catch (RuntimeException ex) { } finally { if (c != null) { c.close(); } } return false; }
@Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { String[] projection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST, }; StringBuilder selection = new StringBuilder(); Uri uri = Audio.Media.EXTERNAL_CONTENT_URI; String sortOrder = Audio.Media.DEFAULT_SORT_ORDER; uri = Audio.Media.EXTERNAL_CONTENT_URI; long[] mNowPlaying = MusicUtils.getQueue(); if (mNowPlaying.length == 0) return null; selection = new StringBuilder(); selection.append(BaseColumns._ID + " IN ("); if (mNowPlaying == null || mNowPlaying.length <= 0) return null; for (long queue_id : mNowPlaying) { selection.append(queue_id + ","); } selection.deleteCharAt(selection.length() - 1); selection.append(")"); return new AddIdCursorLoader(getActivity(), uri, projection, selection.toString(), null, sortOrder); }
/** * Reload the queue after we remove a track */ private void reloadQueueCursor() { String[] projection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST, }; StringBuilder selection = new StringBuilder(); Uri uri = Audio.Media.EXTERNAL_CONTENT_URI; String sortOrder = Audio.Media.DEFAULT_SORT_ORDER; uri = Audio.Media.EXTERNAL_CONTENT_URI; long[] mNowPlaying = MusicUtils.getQueue(); if (mNowPlaying.length == 0) return; selection = new StringBuilder(); selection.append(BaseColumns._ID + " IN ("); if (mNowPlaying == null || mNowPlaying.length <= 0) return; for (long queue_id : mNowPlaying) { selection.append(queue_id + ","); } selection.deleteCharAt(selection.length() - 1); selection.append(")"); mCursor = MusicUtils.query(getActivity(), uri, projection, selection.toString(), null, sortOrder); mQuickQueueAdapter.changeCursor(mCursor); }
@Override public void setupFragmentData() { mAdapter = new AlbumListAdapter(getActivity(), R.layout.music_listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST }; StringBuilder where = new StringBuilder(); where.append(AudioColumns.IS_MUSIC + "=1") .append(" AND " + MediaColumns.TITLE + " != ''"); long albumId = getArguments().getLong(BaseColumns._ID); where.append(" AND " + AudioColumns.ALBUM_ID + "=" + albumId); mWhere = where.toString(); mSortOrder = Audio.Media.TRACK + ", " + Audio.Media.DEFAULT_SORT_ORDER; mUri = Audio.Media.EXTERNAL_CONTENT_URI; mFragmentGroupId = 89; mType = TYPE_ALBUM; mTitleColumn = MediaColumns.TITLE; }
public void setupFragmentData(){ mAdapter = new RecentlyAddedAdapter(getActivity(), R.layout.music_listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST }; StringBuilder where = new StringBuilder(); int X = MusicUtils.getIntPref(getActivity(), NUMWEEKS, 5) * 3600 * 24 * 7; where.append(MediaColumns.TITLE + " != ''"); where.append(" AND " + AudioColumns.IS_MUSIC + "=1"); where.append(" AND " + MediaColumns.DATE_ADDED + ">" + (System.currentTimeMillis() / 1000 - X)); mWhere = where.toString(); mSortOrder = MediaColumns.DATE_ADDED + " DESC"; mUri = Audio.Media.EXTERNAL_CONTENT_URI; mTitleColumn = MediaColumns.TITLE; }
@Override public void setupFragmentData(){ mAdapter = new ArtistListAdapter(getActivity(), R.layout.music_listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST }; StringBuilder where = new StringBuilder(); where.append(AudioColumns.IS_MUSIC + "=1") .append(" AND " + MediaColumns.TITLE + " != ''"); long artist_id = getArguments().getLong(BaseColumns._ID); where.append(" AND " + AudioColumns.ARTIST_ID + "=" + artist_id); mWhere = where.toString(); mSortOrder = MediaColumns.TITLE; mUri = Audio.Media.EXTERNAL_CONTENT_URI; mFragmentGroupId = 88; mType = TYPE_ARTIST; mTitleColumn = MediaColumns.TITLE; }
private int idForplaylist(String name) { Cursor cursor = MusicUtils.query(this, Audio.Playlists.EXTERNAL_CONTENT_URI, new String[] { Audio.Playlists._ID }, Audio.Playlists.NAME + "=?", new String[] { name }, Audio.Playlists.NAME, 0); int id = -1; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { id = cursor.getInt(0); } cursor.close(); } return id; }
private String nameForId(long id) { Cursor cursor = MusicUtils.query(this, Audio.Playlists.EXTERNAL_CONTENT_URI, new String[] { Audio.Playlists.NAME }, Audio.Playlists._ID + "=?", new String[] { Long.valueOf(id).toString() }, Audio.Playlists.NAME); String name = null; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { name = cursor.getString(0); } cursor.close(); } return name; }
/** * @param cursor * @return */ public static long[] getSongListForCursor(Cursor cursor) { if (cursor == null) { return sEmptyList; } int len = cursor.getCount(); long[] list = new long[len]; cursor.moveToFirst(); int colidx = -1; try { colidx = cursor.getColumnIndexOrThrow(Audio.Playlists.Members.AUDIO_ID); } catch (IllegalArgumentException ex) { colidx = cursor.getColumnIndexOrThrow(BaseColumns._ID); } for (int i = 0; i < len; i++) { list[i] = cursor.getLong(colidx); cursor.moveToNext(); } return list; }
public static PduPart constructPartFromUri(Context context, Uri uri) throws IOException, MediaTooLargeException { PduPart part = new PduPart(); if (getMediaSize(context, uri) > MAX_MESSAGE_SIZE) throw new MediaTooLargeException("Audio track larger than size maximum."); Cursor cursor = null; try { cursor = context.getContentResolver().query(uri, new String[]{Audio.Media.MIME_TYPE}, null, null, null); if (cursor != null && cursor.moveToFirst()) part.setContentType(cursor.getString(0).getBytes()); else throw new IOException("Unable to query content type."); } finally { if (cursor != null) cursor.close(); } part.setDataUri(uri); part.setContentId((System.currentTimeMillis()+"").getBytes()); part.setName(("Audio" + System.currentTimeMillis()).getBytes()); return part; }
/** * @param context * @param id * @return */ public static long[] getSongListForArtist(Context context, long id) { final String[] projection = new String[] { BaseColumns._ID }; String selection = AudioColumns.ARTIST_ID + "=" + id + " AND " + AudioColumns.IS_MUSIC + "=1"; String sortOrder = AudioColumns.ALBUM_KEY + "," + AudioColumns.TRACK; Uri uri = Audio.Media.EXTERNAL_CONTENT_URI; Cursor cursor = query(context, uri, projection, selection, null, sortOrder); if (cursor != null) { long[] list = getSongListForCursor(cursor); cursor.close(); return list; } return sEmptyList; }
/** * @param context * @param id * @return */ public static long[] getSongListForAlbum(Context context, long id) { final String[] projection = new String[] { BaseColumns._ID }; String selection = AudioColumns.ALBUM_ID + "=" + id + " AND " + AudioColumns.IS_MUSIC + "=1"; String sortOrder = AudioColumns.TRACK; Uri uri = Audio.Media.EXTERNAL_CONTENT_URI; Cursor cursor = query(context, uri, projection, selection, null, sortOrder); if (cursor != null) { long[] list = getSongListForCursor(cursor); cursor.close(); return list; } return sEmptyList; }
/** * @param context * @return */ public static long getFavoritesId(Context context) { long favorites_id = -1; String favorites_where = PlaylistsColumns.NAME + "='" + "Favorites" + "'"; String[] favorites_cols = new String[] { BaseColumns._ID }; Uri favorites_uri = Audio.Playlists.EXTERNAL_CONTENT_URI; Cursor cursor = query(context, favorites_uri, favorites_cols, favorites_where, null, null); if (cursor.getCount() <= 0) { favorites_id = createPlaylist(context, "Favorites"); } else { cursor.moveToFirst(); favorites_id = cursor.getLong(0); cursor.close(); } return favorites_id; }
/** * @param index * @param id */ private void tracksBrowser(long id) { String artistName = mCursor.getString(mArtistNameIndex); String albumName = mCursor.getString(mAlbumNameIndex); String albumId = mCursor.getString(mAlbumIdIndex); Bundle bundle = new Bundle(); bundle.putString(MIME_TYPE, Audio.Albums.CONTENT_TYPE); bundle.putString(ALBUM_KEY, albumName); bundle.putString(ALBUM_ID_KEY, albumId); bundle.putString(ARTIST_KEY, artistName); bundle.putLong(BaseColumns._ID, id); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(getActivity(), TracksBrowser.class); intent.putExtras(bundle); getActivity().startActivity(intent); }
/** * @param context * @param id */ public static void removeFromFavorites(Context context, long id) { long favorites_id; if (id < 0) { } else { ContentResolver resolver = context.getContentResolver(); String favorites_where = PlaylistsColumns.NAME + "='" + PLAYLIST_NAME_FAVORITES + "'"; String[] favorites_cols = new String[] { BaseColumns._ID }; Uri favorites_uri = Audio.Playlists.EXTERNAL_CONTENT_URI; Cursor cursor = resolver.query(favorites_uri, favorites_cols, favorites_where, null, null); if (cursor.getCount() <= 0) { favorites_id = createPlaylist(context, PLAYLIST_NAME_FAVORITES); } else { cursor.moveToFirst(); favorites_id = cursor.getLong(0); cursor.close(); } Uri uri = Playlists.Members.getContentUri(EXTERNAL, favorites_id); resolver.delete(uri, Playlists.Members.AUDIO_ID + "=" + id, null); } }
/** * {@inheritDoc} */ @Override public void onSaveClick() { final String playlistName = mPlaylist.getText().toString(); if (playlistName != null && playlistName.length() > 0) { final ContentResolver resolver = getActivity().getContentResolver(); final ContentValues values = new ContentValues(1); values.put(Audio.Playlists.NAME, Capitalize.capitalize(playlistName)); resolver.update(Audio.Playlists.EXTERNAL_CONTENT_URI, values, MediaStore.Audio.Playlists._ID + "=?", new String[]{ String.valueOf(mRenameId) } ); resolver.notifyChange(Uris.EXTERNAL_MEDIASTORE_PLAYLISTS, null); closeKeyboard(); getDialog().dismiss(); } }
/** * @param playlist_id * @return playlist name */ public static String getPlaylistName(Context mContext, long playlist_id) { String where = BaseColumns._ID + "=" + playlist_id; String[] cols = new String[] { PlaylistsColumns.NAME }; Uri uri = Audio.Playlists.EXTERNAL_CONTENT_URI; Cursor cursor = mContext.getContentResolver().query(uri, cols, where, null, null); if (cursor == null){ return ""; } if (cursor.getCount() <= 0) return ""; cursor.moveToFirst(); String name = cursor.getString(0); cursor.close(); return name; }
public void onSearchWeb(){ String query = ""; if (Audio.Artists.CONTENT_TYPE.equals(mimeType)) { query = getArtist(); } else if (Audio.Albums.CONTENT_TYPE.equals(mimeType)) { query = getAlbum() + " " + getArtist(); } else if (Audio.Playlists.CONTENT_TYPE.equals(mimeType)) { query = bundle.getString(PLAYLIST_NAME); } else{ Long id = bundle.getLong(BaseColumns._ID); query = MusicUtils.parseGenreName(this, MusicUtils.getGenreName(this, id, true)); } final Intent googleSearch = new Intent(Intent.ACTION_WEB_SEARCH); googleSearch.putExtra(SearchManager.QUERY, query); startActivity(googleSearch); }
/** * Takes you into the @TracksBrowser to view all of the tracks on the * current album */ private void tracksBrowser() { String artistName = MusicUtils.getArtistName(); String albumName = MusicUtils.getAlbumName(); String albumId = String.valueOf(MusicUtils.getCurrentAlbumId()); long id = MusicUtils.getCurrentAlbumId(); Bundle bundle = new Bundle(); bundle.putString(MIME_TYPE, Audio.Albums.CONTENT_TYPE); bundle.putString(ARTIST_KEY, artistName); bundle.putString(ALBUM_KEY, albumName); bundle.putString(ALBUM_ID_KEY, albumId); bundle.putLong(BaseColumns._ID, id); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(getActivity(), TracksBrowser.class); intent.putExtras(bundle); getActivity().startActivity(intent); }
public void setupFragmentData(){ mAdapter = new RecentlyAddedAdapter(getActivity(), R.layout.listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST }; StringBuilder where = new StringBuilder(); int X = MusicUtils.getIntPref(getActivity(), NUMWEEKS, 5) * 3600 * 24 * 7; where.append(MediaColumns.TITLE + " != ''"); where.append(" AND " + AudioColumns.IS_MUSIC + "=1"); where.append(" AND " + MediaColumns.DATE_ADDED + ">" + (System.currentTimeMillis() / 1000 - X)); mWhere = where.toString(); mSortOrder = MediaColumns.DATE_ADDED + " DESC"; mUri = Audio.Media.EXTERNAL_CONTENT_URI; mTitleColumn = MediaColumns.TITLE; }
@Override public void setupFragmentData() { mAdapter = new AlbumListAdapter(getActivity(), R.layout.listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST }; StringBuilder where = new StringBuilder(); where.append(AudioColumns.IS_MUSIC + "=1") .append(" AND " + MediaColumns.TITLE + " != ''"); long albumId = getArguments().getLong(BaseColumns._ID); where.append(" AND " + AudioColumns.ALBUM_ID + "=" + albumId); mWhere = where.toString(); mSortOrder = Audio.Media.TRACK + ", " + Audio.Media.DEFAULT_SORT_ORDER; mUri = Audio.Media.EXTERNAL_CONTENT_URI; mFragmentGroupId = 89; mType = TYPE_ALBUM; mTitleColumn = MediaColumns.TITLE; }
public void setupFragmentData(){ mAdapter = new RecentlyAddedAdapter(getActivity(), R.layout.listview_items, null, new String[] {}, new int[] {}, 0); //构造查询语句,父类中回调,给cursorloader使用 mProjection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST }; StringBuilder where = new StringBuilder(); int X = MusicUtils.getIntPref(getActivity(), NUMWEEKS, 5) * 3600 * 24 * 7; where.append(MediaColumns.TITLE + " != ''"); where.append(" AND " + AudioColumns.IS_MUSIC + "=1"); where.append(" AND " + MediaColumns.DATE_ADDED + ">" + (System.currentTimeMillis() / 1000 - X)); mWhere = where.toString(); mSortOrder = MediaColumns.DATE_ADDED + " DESC"; //查询音乐的uri? mUri = Audio.Media.EXTERNAL_CONTENT_URI; mTitleColumn = MediaColumns.TITLE; }
@Override public void setupFragmentData(){ mAdapter = new ArtistListAdapter(getActivity(), R.layout.listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST }; StringBuilder where = new StringBuilder(); where.append(AudioColumns.IS_MUSIC + "=1") .append(" AND " + MediaColumns.TITLE + " != ''"); long artist_id = getArguments().getLong(BaseColumns._ID); where.append(" AND " + AudioColumns.ARTIST_ID + "=" + artist_id); mWhere = where.toString(); mSortOrder = MediaColumns.TITLE; mUri = Audio.Media.EXTERNAL_CONTENT_URI; mFragmentGroupId = 88; mType = TYPE_ARTIST; mTitleColumn = MediaColumns.TITLE; }
public void setupFragmentData(){ mAdapter = new SonglistAdapter(getActivity(), R.layout.listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST }; StringBuilder where = new StringBuilder(); where.append(AudioColumns.IS_MUSIC + "=1").append(" AND " + MediaColumns.TITLE + " != ''"); mWhere = where.toString(); mSortOrder = Audio.Media.DEFAULT_SORT_ORDER; mUri = Audio.Media.EXTERNAL_CONTENT_URI; mFragmentGroupId = 3; mType = TYPE_SONG; mTitleColumn = MediaColumns.TITLE; View shuffle_temp = View.inflate(getActivity(), R.layout.shuffle_all, null); mListView.addHeaderView(shuffle_temp); RelativeLayout shuffle = (RelativeLayout)shuffle_temp.findViewById(R.id.shuffle_wrapper); shuffle.setVisibility(View.VISIBLE); shuffle.setOnClickListener(new RelativeLayout.OnClickListener() { public void onClick(View v) { MusicUtils.suffle(getActivity()); } }); }
/** * Check if we're viewing the contents of a playlist */ public void isEditMode() { if (getArguments() != null) { String mimetype = getArguments().getString(MIME_TYPE); if (Audio.Playlists.CONTENT_TYPE.equals(mimetype)) { mPlaylistId = getArguments().getLong(BaseColumns._ID); switch ((int)mPlaylistId) { case (int)PLAYLIST_QUEUE: mEditMode = true; break; case (int)PLAYLIST_FAVORITES: mEditMode = true; break; default: if (mPlaylistId > 0) { mEditMode = true; } break; } } } }
/** * {@inheritDoc} */ @Override public void onSaveClick() { final String playlistName = mPlaylist.getText().toString(); if (playlistName != null && playlistName.length() > 0) { final ContentResolver resolver = getSherlockActivity().getContentResolver(); final ContentValues values = new ContentValues(1); values.put(Audio.Playlists.NAME, Capitalize.capitalize(playlistName)); resolver.update(Audio.Playlists.EXTERNAL_CONTENT_URI, values, MediaStore.Audio.Playlists._ID + "=?", new String[] { Long.valueOf(mRenameId).toString() }); closeKeyboard(); getDialog().dismiss(); } }