⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 artistalbumbrowseractivity.java

📁 Android平台上的media player, iPhone风格
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                Intent intent = new Intent();                intent.setClass(this, CreatePlaylist.class);                startActivityForResult(intent, NEW_PLAYLIST);                return true;            }            case PLAYLIST_SELECTED: {                int [] list =                    mCurrentArtistId != null ?                    MusicUtils.getSongListForArtist(this, Integer.parseInt(mCurrentArtistId))                    : MusicUtils.getSongListForAlbum(this, Integer.parseInt(mCurrentAlbumId));                int playlist = item.getIntent().getIntExtra("playlist", 0);                MusicUtils.addToPlaylist(this, list, playlist);                return true;            }                        case DELETE_ITEM: {                int [] list;                String desc;                if (mCurrentArtistId != null) {                    list = MusicUtils.getSongListForArtist(this, Integer.parseInt(mCurrentArtistId));                    String f = getString(R.string.delete_artist_desc);                    desc = String.format(f, mCurrentArtistName);                } else {                    list = MusicUtils.getSongListForAlbum(this, Integer.parseInt(mCurrentAlbumId));                    String f = getString(R.string.delete_album_desc);                     desc = String.format(f, mCurrentAlbumName);                }                Bundle b = new Bundle();                b.putString("description", desc);                b.putIntArray("items", list);                Intent intent = new Intent();                intent.setClass(this, DeleteItems.class);                intent.putExtras(b);                startActivityForResult(intent, -1);                return true;            }        }        return super.onContextItemSelected(item);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {        switch (requestCode) {            case SCAN_DONE:                if (resultCode == RESULT_CANCELED) {                    finish();                } else {                    init();                }                break;            case NEW_PLAYLIST:                if (resultCode == RESULT_OK) {                    Uri uri = Uri.parse(intent.getAction());                    if (uri != null) {                        int [] list = null;                        if (mCurrentArtistId != null) {                            list = MusicUtils.getSongListForArtist(this, Integer.parseInt(mCurrentArtistId));                        } else if (mCurrentAlbumId != null) {                            list = MusicUtils.getSongListForAlbum(this, Integer.parseInt(mCurrentAlbumId));                        }                        MusicUtils.addToPlaylist(this, list, Integer.parseInt(uri.getLastPathSegment()));                    }                }                break;        }    }    private Cursor getArtistCursor(String filterstring) {        StringBuilder where = new StringBuilder();        where.append(MediaStore.Audio.Artists.ARTIST + " != ''");                // Add in the filtering constraints        String [] keywords = null;        if (filterstring != null) {            String [] searchWords = filterstring.split(" ");            keywords = new String[searchWords.length];            Collator col = Collator.getInstance();            col.setStrength(Collator.PRIMARY);            for (int i = 0; i < searchWords.length; i++) {                keywords[i] = '%' + MediaStore.Audio.keyFor(searchWords[i]) + '%';            }            for (int i = 0; i < searchWords.length; i++) {                where.append(" AND ");                where.append(MediaStore.Audio.Media.ARTIST_KEY + " LIKE ?");            }        }        String whereclause = where.toString();          String[] cols = new String[] {                MediaStore.Audio.Artists._ID,                MediaStore.Audio.Artists.ARTIST,                MediaStore.Audio.Artists.NUMBER_OF_ALBUMS,                MediaStore.Audio.Artists.NUMBER_OF_TRACKS        };        Cursor ret;        ret = MusicUtils.query(this, MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,                cols, whereclause , keywords, MediaStore.Audio.Artists.ARTIST_KEY);        return ret;    }        class ArtistAlbumListAdapter extends SimpleCursorTreeAdapter {                private final Drawable mNowPlayingOverlay;        private final BitmapDrawable mDefaultAlbumIcon;        private final int mGroupArtistIdIdx;        private final int mGroupArtistIdx;        private final int mGroupAlbumIdx;        private final int mGroupSongIdx;        private final Resources mResources;        private final String mAlbumSongSeparator;        private final String mUnknownAlbum;        private final String mUnknownArtist;        private final StringBuilder mBuffer = new StringBuilder();        private final Object[] mFormatArgs = new Object[1];                class ViewHolder {            TextView line1;            TextView line2;//            ImageView play_indicator;            ImageView icon;        }        ArtistAlbumListAdapter(Context context, Cursor cursor,                int glayout, String[] gfrom, int[] gto,                 int clayout, String[] cfrom, int[] cto) {            super(context, cursor, glayout, gfrom, gto, clayout, cfrom, cto);            Resources r = getResources();            mNowPlayingOverlay = r.getDrawable(R.drawable.indicator_ic_mp_playing_list);            mDefaultAlbumIcon = (BitmapDrawable) r.getDrawable(R.drawable.albumart_mp_unknown_list);            // no filter or dither, it's a lot faster and we can't tell the difference            mDefaultAlbumIcon.setFilterBitmap(false);            mDefaultAlbumIcon.setDither(false);            mGroupArtistIdIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Artists._ID);            mGroupArtistIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Artists.ARTIST);            mGroupAlbumIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Artists.NUMBER_OF_ALBUMS);            mGroupSongIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Artists.NUMBER_OF_TRACKS);                        mResources = context.getResources();            mAlbumSongSeparator = context.getString(R.string.albumsongseparator);            mUnknownAlbum = context.getString(R.string.unknown_album_name);            mUnknownArtist = context.getString(R.string.unknown_artist_name);        }        @Override        public View newGroupView(Context context, Cursor cursor, boolean isExpanded, ViewGroup parent) {            View v = super.newGroupView(context, cursor, isExpanded, parent);            ImageView iv = (ImageView) v.findViewById(R.id.icon);            ViewGroup.LayoutParams p = iv.getLayoutParams();            p.width = ViewGroup.LayoutParams.WRAP_CONTENT;            p.height = ViewGroup.LayoutParams.WRAP_CONTENT;            ViewHolder vh = new ViewHolder();            vh.line1 = (TextView) v.findViewById(R.id.line1);            vh.line2 = (TextView) v.findViewById(R.id.line2);//            vh.play_indicator = (ImageView) v.findViewById(R.id.play_indicator);            vh.icon = (ImageView) v.findViewById(R.id.icon);            vh.icon.setPadding(1, 1, 1, 1);            v.setTag(vh);            return v;        }        @Override        public View newChildView(Context context, Cursor cursor, boolean isLastChild,                ViewGroup parent) {            View v = super.newChildView(context, cursor, isLastChild, parent);            ViewHolder vh = new ViewHolder();            vh.line1 = (TextView) v.findViewById(R.id.line1);            vh.line2 = (TextView) v.findViewById(R.id.line2);//            vh.play_indicator = (ImageView) v.findViewById(R.id.play_indicator);            vh.icon = (ImageView) v.findViewById(R.id.icon);            vh.icon.setBackgroundDrawable(mDefaultAlbumIcon);            vh.icon.setPadding(1, 1, 1, 1);            v.setTag(vh);            return v;        }                @Override        public void bindGroupView(View view, Context context, Cursor cursor, boolean isexpanded) {            ViewHolder vh = (ViewHolder) view.getTag();            String artist = cursor.getString(mGroupArtistIdx);            String displayartist = artist;            boolean unknown = MediaFile.UNKNOWN_STRING.equals(artist);            if (unknown) {                displayartist = mUnknownArtist;            }            vh.line1.setText(displayartist);            int numalbums = cursor.getInt(mGroupAlbumIdx);            int numsongs = cursor.getInt(mGroupSongIdx);                        String songs_albums = MusicUtils.makeAlbumsSongsLabel(context,                    numalbums, numsongs, unknown);                        vh.line2.setText(songs_albums);            //            int currentartistid = MusicUtils.getCurrentArtistId();//            int artistid = cursor.getInt(mGroupArtistIdIdx);//            if (currentartistid == artistid && !isexpanded) {//                vh.play_indicator.setImageDrawable(mNowPlayingOverlay);//            } else {//                vh.play_indicator.setImageDrawable(null);//            }        }        @Override        public void bindChildView(View view, Context context, Cursor cursor, boolean islast) {            ViewHolder vh = (ViewHolder) view.getTag();            String name = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.ALBUM));            String displayname = name;            if (name.equals(MediaFile.UNKNOWN_STRING)) {                displayname = mUnknownAlbum;            }            vh.line1.setText(displayname);            int numsongs = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.NUMBER_OF_SONGS));            int first = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.FIRST_YEAR));            int last = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.LAST_YEAR));            if (first == 0) {                first = last;            }            final StringBuilder builder = mBuffer;            builder.delete(0, builder.length());            if (numsongs == 1) {                builder.append(context.getString(R.string.onesong));            } else {                final Object[] args = mFormatArgs;                args[0] = numsongs;                builder.append(mResources.getQuantityString(R.plurals.Nsongs, numsongs, args));            }            if (first != 0 && last != 0) {                builder.append(mAlbumSongSeparator);                                builder.append(first);                if (first != last) {                    builder.append('-');                    builder.append(last);                } else {                }            }            vh.line2.setText(builder.toString());            //            ImageView iv = vh.icon;//            // We don't actually need the path to the thumbnail file,//            // we just use it to see if there is album art or not//            String art = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART));//            if (art == null || art.length() == 0) {//                iv.setBackgroundDrawable(mDefaultAlbumIcon);//                iv.setImageDrawable(null);//            } else {//                int artIndex = cursor.getInt(0);//                Drawable d = MusicUtils.getCachedArtwork(context, artIndex, mDefaultAlbumIcon);//                iv.setImageDrawable(d);//            }////            int currentalbumid = MusicUtils.getCurrentAlbumId();//            int aid = cursor.getInt(0);//            iv = vh.play_indicator;//            if (currentalbumid == aid) {//                iv.setImageDrawable(mNowPlayingOverlay);//            } else {//                iv.setImageDrawable(null);//            }        }                @Override        protected Cursor getChildrenCursor(Cursor groupCursor) {                        int id = groupCursor.getInt(groupCursor.getColumnIndexOrThrow(MediaStore.Audio.Artists._ID));                        String[] cols = new String[] {                    MediaStore.Audio.Albums._ID,                    MediaStore.Audio.Albums.ALBUM,                    MediaStore.Audio.Albums.ARTIST,                    MediaStore.Audio.Albums.NUMBER_OF_SONGS,                    MediaStore.Audio.Albums.FIRST_YEAR,                    MediaStore.Audio.Albums.LAST_YEAR,                    MediaStore.Audio.Albums.ALBUM_ART            };            return MusicUtils.query(ArtistAlbumBrowserActivity.this,                    MediaStore.Audio.Artists.Albums.getContentUri("external", id),                    cols, null, null, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);        }        @Override        public void changeCursor(Cursor cursor) {            super.changeCursor(cursor);            mArtistCursor = cursor;        }        @Override        public Cursor runQueryOnBackgroundThread(CharSequence constraint) {            return getArtistCursor(constraint.toString());        }    }        private Cursor mArtistCursor;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -