如何通过 java 从 mediastore 获取不同的元素
How to get the distinct element from mediastore by java
我正在尝试获取所有音频文件的文件名,但我得到的多首歌曲的文件名相同
1.I 无法使用 DISTINCT
关键字,因为我从 DATA
获取文件名。
2.I 我正在使用 Mediastore.Files 所以 select 需要 MEDIA_TYPE
所以这种方式也是不可能的。
3 。我希望 Parent
值是不同的而不是重复值。
所以唯一的方法是在 java 中执行。我按照给定的方法 here 但是我无法设置
这是我的一段代码
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());
}
如何获取非重复元素??欲了解更多信息 mediastore.file
我在 Mediafileinfo class 中添加数据,其中包含 getter 和 setter.
I want to get the Parent value as distinct not the repeating value .
好的,您可以使用 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
我正在尝试获取所有音频文件的文件名,但我得到的多首歌曲的文件名相同
1.I 无法使用 DISTINCT
关键字,因为我从 DATA
获取文件名。
2.I 我正在使用 Mediastore.Files 所以 select 需要 MEDIA_TYPE
所以这种方式也是不可能的。
3 。我希望 Parent
值是不同的而不是重复值。
所以唯一的方法是在 java 中执行。我按照给定的方法 here 但是我无法设置
这是我的一段代码
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());
}
如何获取非重复元素??欲了解更多信息 mediastore.file 我在 Mediafileinfo class 中添加数据,其中包含 getter 和 setter.
I want to get the Parent value as distinct not the repeating value .
好的,您可以使用 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