gpt4 book ai didi

java - 如何排除/storage/emulated/0/Ringtones中的文件

转载 作者:行者123 更新时间:2023-12-02 08:40:33 27 4
gpt4 key购买 nike

当我使用 adb 时,我找不到 /storage/emulated/0 文件夹。我基本上试图加载内部存储中的所有音频文件,但试图排除系统特定的音频,如铃声和通知音,如按键音等。我有以下代码:

String[] mediaAttrs = {
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.DATE_ADDED,
};
mCursor = context.getContentResolver().query(
MediaStore.Audio.Media.INTERNAL_CONTENT_URI,mediaAttrs,null,null,null);

String[] excludeLocations = {"/system","/storage/emulated/0/Ringtones"};

boolean locationInclude = true;
while(mCursor.moveToNext()){
String mediaLocation = mCursor.getString(mediaLocationIndex);//required column index
for(String eachLocation:excludeLocations){
if(mediaLocation.startsWith(eachLocation)) {
Log.e("LocationTest:Excluded"," "+mediaLocation);
locationInclude = false;
}
}

if(locationInclude){
Log.e("LocationTest:Included"," "+mediaLocation);
this.insert( ... );//insert found data
}
locationInclude = true;

}

然后我使用以下内容填充 ListView :

Cursor mPlayListCursor = mDB.getWritableDB().query(
Audio,//table name
new String[]{"_id","mediaLocation"},
null,null,null,null, "mediaLocation"+" ASC"
);

SimpleCursorAdapter mAudioAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
mCursor,
new String[]{"mediaLocation"},
new int[]{android.R.id.text1},0
);
ListView lv = findViewById(R.id.mListView);
lv.setAdapter(mAudioAdapter);

最奇怪的是,/system下的所有音频文件都被排除了,只有两个文件:

  1. /storage/emulated/0/Ringtones/hangouts_incoming_call.ogg
  2. /storage/emulated/0/Ringtones/hangouts_message.ogg

总是出现在ListView中,使用adb查看时该文件夹不存在,这个文件夹是什么?它是在运行时创建的吗?那么音频是如何到达那里的呢?我该如何避免它们被填充到 ListView 中?

最佳答案

你能试试这个吗:

String selection = MediaStore.Audio.Media.ALBUM + " not like ? and " + 
MediaStore.Audio.Media.DATA + " not like ? ";
String [] args = {"%" + "ringtones" + "%", "%" + "system/" + "%"};

Cursor mCursor = context.getContentResolver().query(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,mediaAttrs,selection,args,null);

while(mCursor.moveToNext()){
// mCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)
String mediaLocation = mCursor.getString(1);//required column index
Log.d("LocationTest:Excluded"," "+mediaLocation);
}

关于java - 如何排除/storage/emulated/0/Ringtones中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61415736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com