Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓<;未知>;MediaStore中的体裁_Android - Fatal编程技术网

Android 安卓<;未知>;MediaStore中的体裁

Android 安卓<;未知>;MediaStore中的体裁,android,Android,有没有办法在MediaStore中查询流派,同时查找没有流派集的歌曲 此代码返回所有具有流派集的歌曲,但跳过那些没有流派集的歌曲 String[] proj1 = new String[]{ MediaStore.Audio.Genres.NAME, MediaStore.Audio.Genres._ID }; ContentResolver cr = activity.getContentResolver(); genreCursor =

有没有办法在MediaStore中查询流派,同时查找没有流派集的歌曲

此代码返回所有具有流派集的歌曲,但跳过那些没有流派集的歌曲

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不会迭代“未知”类型。它只是在已知的流派上迭代。未知是已知的流派。此代码不读取未知类型。它只是跳过所有具有未知流派的歌曲。如果在设备中循环浏览歌曲列表,元数据会将流派显示为“未知”,但不确定为什么它没有列在流派列表中。