簡體   English   中英

如何通過Java從MediaStore獲取獨特元素

[英]How to get the distinct element from mediastore by java

我正在嘗試獲取所有音頻文件的文件名,但是多首歌曲卻獲得相同的文件名

1.我無法使用DISTINCT關鍵字,因為我正在從DATA獲取文件名。

2.我正在使用Mediastore.Files,所以選擇它需要MEDIA_TYPE所以這種方式也是不可能的。

3。我想讓Parent值與眾不同而不是重復值。

所以唯一的辦法就是在java中做。我遵循這里給出的方法但是我無法設置

這是我的一部分代碼

if (audioCursor.moveToFirst()) {
    do {
        int filetitle = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.TITLE);
        int file_id = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID);
        int fileparent = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.PARENT);
        int filedata = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA);
        Mediafileinfo info = new Mediafileinfo();

        info.setData(new File(new File(audioCursor.getString(filedata)).getParent()).getName());
        info.setTitle(audioCursor.getString(filetitle));
        info.set_id(audioCursor.getString(file_id));
        info.setParent(audioCursor.getString(fileparent));

        audioList.add(info);
    } while (audioCursor.moveToNext());
}

如何獲得非重復元素? 有關更多信息, 在mediafileinfo類中添加包含getter和setter的數據。

我想將Parent值作為唯一值而不是重復值。

好了,您可以使用HashSet<String>來維護列出的MediaStore.Files.FileColumns.PARENT值。

不過,不確定SQL方法有什么問題。

HashSet<String> seenParents = new HashSet<String>();

if (audioCursor.moveToFirst()) {
    final int fileparent = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.PARENT);
    do {
        String parent = audioCursor.getString(fileparent);

        Mediafileinfo info = new Mediafileinfo();
        // bla...
        info.setParent(parent);

        if (!seenParents.contains(parent)) { // prevents dups
            seenParents.add(parent);
            audioList.add(info);
        }

// end loop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM