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

📄 albumbrowseractivity.java

📁 Android平台上的media player, iPhone风格
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        }        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 = MusicUtils.getSongListForAlbum(this, Integer.parseInt(mCurrentAlbumId));                        MusicUtils.addToPlaylist(this, list, Integer.parseInt(uri.getLastPathSegment()));                    }                }                break;        }    }    @Override    protected void onListItemClick(ListView l, View v, int position, long id)    {        if (mHasHeader) {            position --;        }        Intent intent = new Intent(Intent.ACTION_PICK);        intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/Track");        intent.putExtra("album", Long.valueOf(id).toString());        intent.putExtra("artist", mArtistId);        startActivity(intent);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        super.onCreateOptionsMenu(menu);        menu.add(0, GOTO_START, 0, R.string.goto_start).setIcon(R.drawable.ic_menu_music_library);        menu.add(0, GOTO_PLAYBACK, 0, R.string.goto_playback).setIcon(R.drawable.ic_menu_playback);        menu.add(0, SHUFFLE_ALL, 0, R.string.shuffle_all).setIcon(R.drawable.ic_menu_shuffle);        return true;    }    @Override    public boolean onPrepareOptionsMenu(Menu menu) {        menu.findItem(GOTO_PLAYBACK).setVisible(MusicUtils.isMusicLoaded());        return super.onPrepareOptionsMenu(menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        Intent intent;        Cursor cursor;        switch (item.getItemId()) {            case GOTO_START:                intent = new Intent();                intent.setClass(this, MusicBrowserActivity.class);                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(intent);                return true;            case GOTO_PLAYBACK:                intent = new Intent("com.android.imusic.playing");                startActivity(intent);                return true;            case SHUFFLE_ALL:                cursor = MusicUtils.query(this, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,                        new String [] { MediaStore.Audio.Media._ID},                        MediaStore.Audio.Media.IS_MUSIC + "=1", null,                        MediaStore.Audio.Media.DEFAULT_SORT_ORDER);                if (cursor != null) {                    MusicUtils.shuffleAll(this, cursor);                    cursor.close();                }                return true;        }        return super.onOptionsItemSelected(item);    }    private Cursor getAlbumCursor(String filterstring) {        StringBuilder where = new StringBuilder();        where.append(MediaStore.Audio.Albums.ALBUM + " != ''");                // 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 + "||");                where.append(MediaStore.Audio.Media.ALBUM_KEY + " LIKE ?");            }        }        String whereclause = where.toString();                      String[] cols = new String[] {                MediaStore.Audio.Albums._ID,                MediaStore.Audio.Albums.ALBUM,                MediaStore.Audio.Albums.ALBUM_KEY,                MediaStore.Audio.Albums.ARTIST,                MediaStore.Audio.Albums.NUMBER_OF_SONGS,                MediaStore.Audio.Albums.ALBUM_ART        };        Cursor ret;        if (mArtistId != null) {            ret = MusicUtils.query(this,                    MediaStore.Audio.Artists.Albums.getContentUri("external", Long.valueOf(mArtistId)),                    cols, whereclause, keywords, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);        } else {            ret = MusicUtils.query(this, MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,                cols, whereclause, keywords, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);        }        return ret;    }        class AlbumListAdapter extends SimpleCursorAdapter {                private final Drawable mNowPlayingOverlay;        private final BitmapDrawable mDefaultAlbumIcon;        private final int mAlbumIdx;        private final int mArtistIdx;        private final int mNumSongsIdx;        private final int mAlbumArtIndex;        private final Resources mResources;        private final StringBuilder mStringBuilder = new StringBuilder();        private final String mUnknownAlbum;        private final String mUnknownArtist;        private final String mAlbumSongSeparator;        private final Object[] mFormatArgs = new Object[1];        class ViewHolder {            TextView line1;//            TextView line2;            TextView duration;//            ImageView play_indicator;            ImageView icon;        }        AlbumListAdapter(Context context, int layout, Cursor cursor, String[] from, int[] to) {            super(context, layout, cursor, from, to);            mUnknownAlbum = context.getString(R.string.unknown_album_name);            mUnknownArtist = context.getString(R.string.unknown_artist_name);            mAlbumSongSeparator = context.getString(R.string.albumsongseparator);            Resources r = getResources();            mNowPlayingOverlay = r.getDrawable(R.drawable.indicator_ic_mp_playing_list);            Bitmap b = BitmapFactory.decodeResource(r, R.drawable.albumart_mp_unknown_list);            mDefaultAlbumIcon = new BitmapDrawable(b);            // no filter or dither, it's a lot faster and we can't tell the difference            mDefaultAlbumIcon.setFilterBitmap(false);            mDefaultAlbumIcon.setDither(false);            mAlbumIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.ALBUM);            mArtistIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.ARTIST);            mNumSongsIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.NUMBER_OF_SONGS);            mAlbumArtIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.ALBUM_ART);                        mResources = context.getResources();        }        @Override        public View newView(Context context, Cursor cursor, ViewGroup parent) {           View v = super.newView(context, cursor, parent);           ViewHolder vh = new ViewHolder();           vh.line1 = (TextView) v.findViewById(R.id.line1);//           vh.line2 = (TextView) v.findViewById(R.id.line2);           vh.duration = (TextView) v.findViewById(R.id.duration);//           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 bindView(View view, Context context, Cursor cursor) {                        ViewHolder vh = (ViewHolder) view.getTag();            String name = cursor.getString(mAlbumIdx);            String displayname = name;            if (MediaFile.UNKNOWN_STRING.equals(name)) {                displayname = mUnknownAlbum;            }            vh.line1.setText(displayname);            //            name = cursor.getString(mArtistIdx);//            displayname = name;//            if (MediaFile.UNKNOWN_STRING.equals(name)) {//                displayname = mUnknownArtist;//            }//            StringBuilder builder = mStringBuilder;//            builder.delete(0, builder.length());//            builder.append(displayname);//            builder.append(mAlbumSongSeparator);//            //            int numsongs = cursor.getInt(mNumSongsIdx);//            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));//            }//            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(mAlbumArtIndex);//            if (art == null || art.length() == 0) {//                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        public void changeCursor(Cursor cursor) {            super.changeCursor(cursor);            mAlbumCursor = cursor;        }        @Override        public Cursor runQueryOnBackgroundThread(CharSequence constraint) {            return getAlbumCursor(constraint.toString());        }    }    private Cursor mAlbumCursor;    private String mArtistId;    private boolean mHasHeader = false;}

⌨️ 快捷键说明

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