我正在使用MediaStore和Cursor从指定的文件夹中获取音频文件。我想要的是,它应该从手机的内部存储器中获取最新的歌曲列表,但它不会获取最新的文件。
例如:我正在录制音频,然后将其保存在特定文件夹中。但是当我看到我的应用程序的播放列表时。它不存在。虽然该文件已成功保存在我的内部存储中。
我已经调试了它,cursor.getCount也没有返回更新的计数数。
String AudioFilePath = "%" +"/nexcox/voicerecorder/audio/" +"%";
Uri uri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection= MediaStore.Audio.Media.DATA +" LIKE ? ";
Cursor cursor=context.getContentResolver().query(uri,null,selection,
new String[]{AudioFilePath},
null);
if (cursor!=null){
if (cursor.moveToFirst()){
do {
String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
String duration = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
String sourceLocation = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
AudioInfo audioInfo=new AudioInfo(name,duration,sourceLocation);
audioInfos.add(audioInfo);
}while (cursor.moveToNext());
}
cursor.close();
audioAdapter=new AudioAdapter(context,audioInfos);
recyclerView.setAdapter(audioAdapter);
}
答案 0 :(得分:0)
这可以这样做:
String[] projection = { MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DISPLAY_NAME};
Cursor myCursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection , null, null, null);
if(myCursor != null){
if(myCursor .moveToFirst()){
do{
int audioIndex = myCursor .getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
audioList.add(myCursor .getString(audioIndex));
}while(myCursor .moveToNext());
}
}
myCursor .close();
答案 1 :(得分:0)
最后,我已经找到了解决方案。我的音频文件没有出现在Recycler视图中的原因是,当我录制音频并将其保存在我指定的路径中时,虽然它已保存在该位置但 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI < / strong>不知道我刚刚保存的文件是音频媒体。因此,为了告诉MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,在停止mediaRecorder时添加了以下代码
ContentValues values = new ContentValues(4);
long current = System.currentTimeMillis();
values.put(MediaStore.Audio.Media.TITLE, "audio file");
values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));
values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");
values.put(MediaStore.Audio.Media.DATA, AudioFilePath);
ContentResolver contentResolver = context.getContentResolver();
// Construct uris
Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Uri newUri = contentResolver.insert(base, values);
添加后,我的音频文件也开始显示在我的recyclerview中。 就像一个魅力。