Android 安卓<;未知>;MediaStore中的体裁
有没有办法在MediaStore中查询流派,同时查找没有流派集的歌曲 此代码返回所有具有流派集的歌曲,但跳过那些没有流派集的歌曲Android 安卓<;未知>;MediaStore中的体裁,android,Android,有没有办法在MediaStore中查询流派,同时查找没有流派集的歌曲 此代码返回所有具有流派集的歌曲,但跳过那些没有流派集的歌曲 String[] proj1 = new String[]{ MediaStore.Audio.Genres.NAME, MediaStore.Audio.Genres._ID }; ContentResolver cr = activity.getContentResolver(); genreCursor =
String[] proj1 = new String[]{
MediaStore.Audio.Genres.NAME,
MediaStore.Audio.Genres._ID
};
ContentResolver cr = activity.getContentResolver();
genreCursor = cr.query(MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI, proj1, null, null, null);
if (genreCursor.moveToFirst()) {
while (genreCursor.moveToNext()) {
int index = genreCursor.getColumnIndexOrThrow(MediaStore.Audio.Genres.NAME);
String genre = genreCursor.getString(index);
index = genreCursor.getColumnIndexOrThrow(MediaStore.Audio.Genres._ID);
long genreId = Long.parseLong(genreCursor.getString(index));
Uri uri = MediaStore.Audio.Genres.Members.getContentUri("external", genreId);
Cursor tempCursor = cr.query(uri, projection, null, null, null);
if (tempCursor.moveToFirst()) {
while (tempCursor.moveToNext()) {
index = tempCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
String title = tempCursor.getString(index);
index = tempCursor.getColumnIndexOrThrow(MediaStore.Audio.Artists.ARTIST);
String artist = tempCursor.getString(index);
index = tempCursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.ALBUM);
String album = tempCursor.getString(index);
songs.add(new Song(artist, title, album, genre));
}
tempCursor.close();
}
}
我正在寻找一种方法来找到那些类型未知的歌曲。是否唯一可以查询所有歌曲,然后与设置了流派的歌曲进行交叉检查,以列出所有设置了流派的歌曲?未知流派的歌曲的流派为“未知”。因此,您将获得设备上所有歌曲的列表。我使用此代码扫描所有具有流派的歌曲,并将其存储在SQLitedatabase中。希望这将有助于你和这段代码也返回流派
int index;
int genres;
long genreId;
int count;
Uri uri;
Cursor genrecursor;
Cursor musicCursor;
db = new DBhelper(getApplicationContext()).getReadableDatabase();
String[] proj1 = {MediaStore.Audio.Genres.NAME, MediaStore.Audio.Genres._ID};
genrecursor=getApplicationContext().getContentResolver().query(MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI,proj1,null, null, null);
if(genrecursor.moveToFirst())
{
do{
genres = genrecursor.getColumnIndexOrThrow(MediaStore.Audio.Genres.NAME);
System.out.println("GENRE NAME: "+genrecursor.getString(genres));
System.out.println("======================================");
index = genrecursor.getColumnIndexOrThrow(MediaStore.Audio.Genres._ID);
genreId=Long.parseLong(genrecursor.getString(index));
uri = MediaStore.Audio.Genres.Members.getContentUri("external", genreId);
musicCursor = getApplicationContext().getContentResolver().query(uri, null, null,null,null);
System.out.println("Total Songs: "+musicCursor.getCount());
if(musicCursor.moveToFirst())
{
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
int albumId = musicCursor.getColumnIndex
(MediaStore.Audio.Media.ALBUM_ID);
int data = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA);
int albumkey = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_KEY);
int albumName = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
int artwork = musicCursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART);
do{
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
long thisalbumId = musicCursor.getLong(albumId);
String thisdata = musicCursor.getString(data);
String AlbumKey = musicCursor.getString(albumkey);
String thisAlbum = musicCursor.getString(albumName);
String thisGenres = genrecursor.getString(genres);
ContentValues value = new ContentValues();
value.put("songtitle", thisTitle);
value.put("songartist", thisArtist);
value.put("songpath", thisdata);
value.put("songalbum", thisAlbum);
value.put("songgenres", thisGenres);
try {
db.insertOrThrow("songListRecord", null, value);
}
catch (SQLiteConstraintException e)
{
}
}while(musicCursor.moveToNext());
}
System.out.println("======================================");
}while(genrecursor.moveToNext());
}
不,遗憾的是,genreCursor不会迭代“未知”类型。它只是在已知的流派上迭代。未知是已知的流派。此代码不读取未知类型。它只是跳过所有具有未知流派的歌曲。如果在设备中循环浏览歌曲列表,元数据会将流派显示为“未知”,但不确定为什么它没有列在流派列表中。