为什么不全部 songs/files 收集我的内容解析器?
Why doesn´t collect my content resolver all songs/files?
我正在 Android Studio 中使用媒体播放器构建音乐播放器。它有效,但有一个问题:一开始,getMusic() 方法(如下所示)正在收集某个文件夹中我的音乐文件的所有信息(标题、艺术家、路径),但是当它完成我的数组列表时只包含 7 首歌曲,但在我的文件夹中有 16 首歌曲。那么为什么我的内容解析器没有获取所有文件呢?
我手机 phone 上的所有这些文件都正常,没有损坏。
希望有人有想法,谢谢!
public void getMusic() {
ContentResolver contentResolver = getContentResolver();
Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Audio.AudioColumns.DATA, MediaStore.Audio.AudioColumns.TITLE, MediaStore.Audio.AudioColumns.ALBUM, MediaStore.Audio.ArtistColumns.ARTIST,};
Cursor songCursor = contentResolver.query(songUri, projection, MediaStore.Audio.Media.DATA + " like ? ", new String[]{"%/storage/emulated/0/Download/Music/%"}, null, null);
Log.e("COUNT", "" + songCursor.getCount());
if (songCursor != null && songCursor.moveToFirst()) {
int songTitle = songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int songArtist = songCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int songPath = songCursor.getColumnIndex((MediaStore.Audio.Media.DATA));
do {
String currentTitle = songCursor.getString(songTitle);
String currentArtist = songCursor.getString(songArtist);
String currentPath = songCursor.getString(songPath);
Uri uriSong = MediaStore.Audio.Media.getContentUriForPath(currentPath);
// Testing purposes
Log.e("TEST", "Name: " + currentTitle + " Artist: " + currentArtist + " Path: " + currentPath + uriSong.toString());
songList.add(new Song(currentPath, "Artist", currentPath));
} while (songCursor.moveToNext());
}
songCursor.close();
Log.e("LIST", "" + songList.size());
}
好的,嗯...解决方法很简单:
我将歌曲从我的云端复制到我的移动设备。从来没有使用过另一种方式,因为它在一开始就有效。
今天我刚选了一个带 USB 记忆棒的 USB-C 适配器,将歌曲复制到记忆棒上,然后从记忆棒复制到我的移动设备上。就是这样。云是问题所在。
我正在 Android Studio 中使用媒体播放器构建音乐播放器。它有效,但有一个问题:一开始,getMusic() 方法(如下所示)正在收集某个文件夹中我的音乐文件的所有信息(标题、艺术家、路径),但是当它完成我的数组列表时只包含 7 首歌曲,但在我的文件夹中有 16 首歌曲。那么为什么我的内容解析器没有获取所有文件呢? 我手机 phone 上的所有这些文件都正常,没有损坏。 希望有人有想法,谢谢!
public void getMusic() {
ContentResolver contentResolver = getContentResolver();
Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Audio.AudioColumns.DATA, MediaStore.Audio.AudioColumns.TITLE, MediaStore.Audio.AudioColumns.ALBUM, MediaStore.Audio.ArtistColumns.ARTIST,};
Cursor songCursor = contentResolver.query(songUri, projection, MediaStore.Audio.Media.DATA + " like ? ", new String[]{"%/storage/emulated/0/Download/Music/%"}, null, null);
Log.e("COUNT", "" + songCursor.getCount());
if (songCursor != null && songCursor.moveToFirst()) {
int songTitle = songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int songArtist = songCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int songPath = songCursor.getColumnIndex((MediaStore.Audio.Media.DATA));
do {
String currentTitle = songCursor.getString(songTitle);
String currentArtist = songCursor.getString(songArtist);
String currentPath = songCursor.getString(songPath);
Uri uriSong = MediaStore.Audio.Media.getContentUriForPath(currentPath);
// Testing purposes
Log.e("TEST", "Name: " + currentTitle + " Artist: " + currentArtist + " Path: " + currentPath + uriSong.toString());
songList.add(new Song(currentPath, "Artist", currentPath));
} while (songCursor.moveToNext());
}
songCursor.close();
Log.e("LIST", "" + songList.size());
}
好的,嗯...解决方法很简单: 我将歌曲从我的云端复制到我的移动设备。从来没有使用过另一种方式,因为它在一开始就有效。 今天我刚选了一个带 USB 记忆棒的 USB-C 适配器,将歌曲复制到记忆棒上,然后从记忆棒复制到我的移动设备上。就是这样。云是问题所在。