1792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project/* 2792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * 4792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * you may not use this file except in compliance with the License. 6792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * You may obtain a copy of the License at 7792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * 8792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * 10792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * See the License for the specific language governing permissions and 14792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * limitations under the License. 15792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project */ 16792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 17792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectpackage com.android.music; 18792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 19f33a575c2b09095d58ad7af527113f767e4c37b1Marco Nelissenimport com.android.music.MusicUtils.ServiceToken; 20f33a575c2b09095d58ad7af527113f767e4c37b1Marco Nelissen 21792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.app.ListActivity; 22792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.content.Context; 23792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.content.Intent; 24792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.content.ContentUris; 25792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.database.Cursor; 26792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.net.Uri; 27792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.os.Bundle; 28792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.os.RemoteException; 29792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.provider.MediaStore; 30792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.view.View; 31792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.view.ViewGroup; 32792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.widget.ImageView; 33792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.widget.ListView; 34792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.widget.SimpleCursorAdapter; 35792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.widget.TextView; 36792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 37792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport java.util.ArrayList; 38792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 39792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectpublic class MediaPickerActivity extends ListActivity implements MusicUtils.Defs 40792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project{ 41f33a575c2b09095d58ad7af527113f767e4c37b1Marco Nelissen private ServiceToken mToken; 42792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 43792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project public MediaPickerActivity() 44792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project { 45792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 46792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 47792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project /** Called when the activity is first created. */ 48792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project @Override 49792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project public void onCreate(Bundle icicle) 50792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project { 51792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project super.onCreate(icicle); 52792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 53792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mFirstYear = getIntent().getStringExtra("firstyear"); 54792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mLastYear = getIntent().getStringExtra("lastyear"); 55792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 56792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (mFirstYear == null) { 57792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project setTitle(R.string.all_title); 58792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else if (mFirstYear.equals(mLastYear)) { 59792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project setTitle(mFirstYear); 60792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else { 61792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project setTitle(mFirstYear + "-" + mLastYear); 62792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 63f33a575c2b09095d58ad7af527113f767e4c37b1Marco Nelissen mToken = MusicUtils.bindToService(this); 64792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project init(); 65792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 66792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 67792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project @Override 68792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project public void onDestroy() { 69f33a575c2b09095d58ad7af527113f767e4c37b1Marco Nelissen MusicUtils.unbindFromService(mToken); 70792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project super.onDestroy(); 71792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (mCursor != null) { 72792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mCursor.close(); 73792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 74792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 75792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 76792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project public void init() { 77792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 78792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project setContentView(R.layout.media_picker_activity); 79792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 80792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MakeCursor(); 81792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (null == mCursor || 0 == mCursor.getCount()) { 82792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project return; 83792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 84792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 85792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project PickListAdapter adapter = new PickListAdapter( 86792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project this, 87792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project R.layout.track_list_item, 88792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mCursor, 89792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project new String[] {}, 90792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project new int[] {}); 91792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 92792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project setListAdapter(adapter); 93792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 94792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 95792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project @Override 96792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project protected void onListItemClick(ListView l, View v, int position, long id) 97792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project { 98792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mCursor.moveToPosition(position); 99792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project String type = mCursor.getString(mCursor.getColumnIndexOrThrow( 100792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.MIME_TYPE)); 101792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 102792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project String action = getIntent().getAction(); 103792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (Intent.ACTION_GET_CONTENT.equals(action)) { 104792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project Uri uri; 105792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 106792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project long mediaId; 107792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (type.startsWith("video")) { 108792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 109792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mediaId = mCursor.getLong(mCursor.getColumnIndexOrThrow( 110792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Video.Media._ID)); 111792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else { 112792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 113792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mediaId = mCursor.getLong(mCursor.getColumnIndexOrThrow( 114792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media._ID)); 115792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 116792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 117792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project setResult(RESULT_OK, new Intent().setData(ContentUris.withAppendedId(uri, mediaId))); 118792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project finish(); 119792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project return; 120792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 121792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 122792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // Need to stop the playbackservice, in case it is busy playing audio 123792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // and the user selected a video. 124792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (MusicUtils.sService != null) { 125792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project try { 126792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MusicUtils.sService.stop(); 127792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } catch (RemoteException ex) { 128792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 129792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 130792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project Intent intent = new Intent(Intent.ACTION_VIEW); 131792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project intent.setDataAndType(ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id), type); 132792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 133792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project startActivity(intent); 134792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 135792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 136792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project private void MakeCursor() { 137792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project String[] audiocols = new String[] { 138792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media._ID, 139792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.ARTIST, 140792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.ALBUM, 141792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.TITLE, 142792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.DATA, 143792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.MIME_TYPE, 144792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.YEAR 145792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project }; 146792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project String[] videocols = new String[] { 147792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media._ID, 148792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.TITLE, 149792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.ARTIST, 150792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.ALBUM, 151792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.TITLE, 152792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.DATA, 153792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.MIME_TYPE 154792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project }; 155792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 156792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project Cursor[] cs; 157792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // Use ArrayList for the moment, since we don't know the size of 158792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // Cursor[]. If the length of Corsor[] larger than really used, 159792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // a NPE will come up when access the content of Corsor[]. 160792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project ArrayList<Cursor> cList = new ArrayList<Cursor>(); 161792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project Intent intent = getIntent(); 162792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project String type = intent.getType(); 163792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 164792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (mFirstYear != null) { 165792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // If mFirstYear is not null, the picker only for audio because 166792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // video has no year column. 167792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if(type.equals("video/*")) { 168792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mCursor = null; 169792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project return; 170792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 171792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 172792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mWhereClause = MediaStore.Audio.Media.YEAR + ">=" + mFirstYear + " AND " + 173792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project MediaStore.Audio.Media.YEAR + "<=" + mLastYear; 174792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 175792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 176792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // If use Cursor[] as before, the Cursor[i] could be null when there is 177792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // no video/audio/sdcard. Then a NPE will come up when access the content of the 178792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // Array. 179792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 180792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project Cursor c; 181792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (type.equals("video/*")) { 182792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // Only video. 183792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project c = MusicUtils.query(this, MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 184792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project videocols, null , null, mSortOrder); 185792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (c != null) { 186792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project cList.add(c); 187792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 188792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else { 189792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project c = MusicUtils.query(this, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 190792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project audiocols, mWhereClause , null, mSortOrder); 191792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 192792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (c != null) { 193792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project cList.add(c); 194792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 195792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 196792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (mFirstYear == null && intent.getType().equals("media/*")) { 197792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // video has no year column 198792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project c = MusicUtils.query(this, MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 199792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project videocols, null , null, mSortOrder); 200792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (c != null) { 201792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project cList.add(c); 202792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 203792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 204792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 205792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 206792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // Get the ArrayList size. 207792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project int size = cList.size(); 208792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if (0 == size) { 209792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // If no video/audio/SDCard exist, return. 210792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mCursor = null; 211792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project return; 212792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 213792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 214792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project // The size is known now, we're sure each item of Cursor[] is not null. 215792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project cs = new Cursor[size]; 216792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project cs = cList.toArray(cs); 217792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mCursor = new SortCursor(cs, MediaStore.Audio.Media.TITLE); 218792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 219792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 220792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project private Cursor mCursor; 221792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project private String mSortOrder = MediaStore.Audio.Media.TITLE + " COLLATE UNICODE"; 222792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project private String mFirstYear; 223792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project private String mLastYear; 224792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project private String mWhereClause; 225792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 226756c3f57f11a7bb3bf1cf1333ee8ffbc51039748Marco Nelissen static class PickListAdapter extends SimpleCursorAdapter { 227792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project int mTitleIdx; 228792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project int mArtistIdx; 229792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project int mAlbumIdx; 230792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project int mMimeIdx; 231792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 232792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project PickListAdapter(Context context, int layout, Cursor cursor, String[] from, int[] to) { 233792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project super(context, layout, cursor, from, to); 234792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 235792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mTitleIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); 236792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mArtistIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); 237792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mAlbumIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM); 238792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project mMimeIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.MIME_TYPE); 239792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 240792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 241792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project @Override 242792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project public View newView(Context context, Cursor cursor, ViewGroup parent) { 243792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project View v = super.newView(context, cursor, parent); 244792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project ImageView iv = (ImageView) v.findViewById(R.id.icon); 245792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project iv.setVisibility(View.VISIBLE); 246792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project ViewGroup.LayoutParams p = iv.getLayoutParams(); 247792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project p.width = ViewGroup.LayoutParams.WRAP_CONTENT; 248792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project p.height = ViewGroup.LayoutParams.WRAP_CONTENT; 249792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 250792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project TextView tv = (TextView) v.findViewById(R.id.duration); 251792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project tv.setVisibility(View.GONE); 252792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project iv = (ImageView) v.findViewById(R.id.play_indicator); 253792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project iv.setVisibility(View.GONE); 254792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 255792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project return v; 256792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 257792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 258792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project @Override 259792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project public void bindView(View view, Context context, Cursor cursor) { 260792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 261792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project TextView tv = (TextView) view.findViewById(R.id.line1); 262792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project String name = cursor.getString(mTitleIdx); 263792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project tv.setText(name); 264792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 265792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project tv = (TextView) view.findViewById(R.id.line2); 266792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project name = cursor.getString(mAlbumIdx); 267792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project StringBuilder builder = new StringBuilder(); 268f4d4b342061ade12eb7903f454df62814179906fMarco Nelissen if (name == null || name.equals(MediaStore.UNKNOWN_STRING)) { 269792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project builder.append(context.getString(R.string.unknown_album_name)); 270792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else { 271792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project builder.append(name); 272792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 273792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project builder.append("\n"); 274792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project name = cursor.getString(mArtistIdx); 275f4d4b342061ade12eb7903f454df62814179906fMarco Nelissen if (name == null || name.equals(MediaStore.UNKNOWN_STRING)) { 276792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project builder.append(context.getString(R.string.unknown_artist_name)); 277792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else { 278792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project builder.append(name); 279792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 280792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project tv.setText(builder.toString()); 281792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project 282792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project String text = cursor.getString(mMimeIdx); 283792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project ImageView iv = (ImageView) view.findViewById(R.id.icon);; 284792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project if("audio/midi".equals(text)) { 285792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project iv.setImageResource(R.drawable.midi); 286792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else if(text != null && (text.startsWith("audio") || 287792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project text.equals("application/ogg") || 288792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project text.equals("application/x-ogg"))) { 289792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project iv.setImageResource(R.drawable.ic_search_category_music_song); 290792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else if(text != null && text.startsWith("video")) { 291792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project iv.setImageResource(R.drawable.movie); 292792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } else { 293792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project iv.setImageResource(0); 294792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 295792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 296792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project } 297792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project} 298