我想通过查询 MediaStore
与 CursorLoader
我怎样才能做到这一点?我可以得到该设备的所有歌曲与此code:
静态最终的String [] TRACK_SUMMARY_PROJECTION = {MediaStore.Audio.Media._ID,MediaStore.Audio.Media.TITLE};
公共装载机<光标> onCreateLoader(INT ID,捆绑参数){
字符串排序顺序= MediaStore.Audio.Media.TITLE +ASC;
串选择= NULL;
返回新CursorLoader(getActivity(),MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
TRACK_SUMMARY_PROJECTION,选择,空,
排序);
}
我应该加入到code或修改过滤特定专辑的歌曲?
一步解决方案走一步看
第1步看的相册,你的手机装载的名字
要索取光标专辑信息
的String []列= {android.provider.MediaStore.Audio.Albums._ID,
android.provider.MediaStore.Audio.Albums.ALBUM};
光标= managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
列,NULL,NULL,NULL);
第2步一旦你找到所有专辑names.You可以把它写下来所需的专辑名称和查询歌曲
要请求包含歌曲信息的特定专辑光标
的String []列= {MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.MIME_TYPE,};
字符串,其中= android.provider.MediaStore.Audio.Media.ALBUM
+=?;
字符串whereVal [] = {专辑的名字从你想要的歌曲};
串排序依据= android.provider.MediaStore.Audio.Media.TITLE;
光标= managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,列,
在这里,whereVal,排序依据);
现在返回此光标。
有关您参考以下的来源$ C $ C,以重新获得其专辑名称和所有歌曲。
包org.vipul;
进口android.app.Activity;
进口android.database.Cursor;
进口android.os.Bundle;
进口android.provider.MediaStore;
进口android.util.Log;
公共类HelloActivity延伸活动{
/ **第一次创建活动时调用。 * /
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
的String []列= {android.provider.MediaStore.Audio.Albums._ID,
android.provider.MediaStore.Audio.Albums.ALBUM};
光标光标= managedQuery(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,列,空,
NULL,NULL);
如果(cursor.moveToFirst()){
做 {
Log.v(VIPUL
cursor.getString(光标
.getColumnIndex(android.provider.MediaStore.Audio.Albums.ALBUM)));
}而(cursor.moveToNext());
}
//我想在这张专辑卷烟纸列出上下曲(豪华版)
字符串[]列= {MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media._ID,MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.MIME_TYPE,};
字符串,其中= android.provider.MediaStore.Audio.Media.ALBUM +=;
字符串whereVal [] = {卷烟纸(豪华版)};
串排序依据= android.provider.MediaStore.Audio.Media.TITLE;
光标= managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
列,其中,whereVal,排序依据);
如果(cursor.moveToFirst()){
做 {
Log.v(VIPUL
cursor.getString(光标
.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
}而(cursor.moveToNext());
}
}
}
I'd like to get the list of songs of an album by querying the MediaStore
with CursorLoader
How can i do this ? I can get all the songs of the device with this code :
static final String[] TRACK_SUMMARY_PROJECTION = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE};
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
String select = null;
return new CursorLoader(getActivity(), MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
TRACK_SUMMARY_PROJECTION, select, null,
sortOrder);
}
What should I add to the code or modification to filter songs of a particular Album ?
解决方案Go step by step
Step 1 Look the names of albums loaded on you phone
To request cursor for Album information
String[] columns = { android.provider.MediaStore.Audio.Albums._ID,
android.provider.MediaStore.Audio.Albums.ALBUM };
cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
columns, null, null, null);
Step 2 Once you find all album names.You can write down the desired album name and query songs from it
To request cursor containing song information for particular album
String[] columns = { MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.MIME_TYPE, };
String where = android.provider.MediaStore.Audio.Media.ALBUM
+ "=?";
String whereVal[] = { Album name from which you want songs };
String orderBy = android.provider.MediaStore.Audio.Media.TITLE;
cursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns,
where, whereVal, orderBy);
Now return this cursor.
For your reference below is Source code to retrieve Album name and all songs in it.
package org.vipul;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
public class HelloActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] columns = { android.provider.MediaStore.Audio.Albums._ID,
android.provider.MediaStore.Audio.Albums.ALBUM };
Cursor cursor = managedQuery(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, columns, null,
null, null);
if (cursor.moveToFirst()) {
do {
Log.v("Vipul",
cursor.getString(cursor
.getColumnIndex(android.provider.MediaStore.Audio.Albums.ALBUM)));
} while (cursor.moveToNext());
}
// I want to list down song in album Rolling Papers (Deluxe Version)
String[] column = { MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.MIME_TYPE, };
String where = android.provider.MediaStore.Audio.Media.ALBUM + "=?";
String whereVal[] = { "Rolling Papers (Deluxe Version)" };
String orderBy = android.provider.MediaStore.Audio.Media.TITLE;
cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
column, where, whereVal, orderBy);
if (cursor.moveToFirst()) {
do {
Log.v("Vipul",
cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
} while (cursor.moveToNext());
}
}
}