Я пытаюсь разработать простой музыкальный плеер, я использую Content Resolver
вместе с URI
и Cursor
, чтобы найти все музыкальные форматы на Android-устройстве.Почему контент Resolver находит удаленные аудиофайлы в android
Но во время тестирования я понял, что даже после удаления песни с устройства они все еще находятся в песнях array
!.
Вот код для обхода устройства для аудиофайлов:
ContentResolver musicResolver = getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
if(musicCursor!=null && musicCursor.moveToFirst()){
//get columns
int songArtist = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int songName = musicCursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME);
int songAlbum = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
int songDuration = musicCursor.getColumnIndex(MediaStore.Audio.Media.DURATION);
int songSource = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
int source = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA);//not used yet
// int gg = musicCursor.getColumnIndex(MediaStore.I)
//add songs to list
do {
long id = musicCursor.getLong(songSource);
String paths = musicCursor.getString(source);
String title = musicCursor.getString(songName);
String artist = musicCursor.getString(songArtist);
String album = musicCursor.getString(songAlbum);
long duration = musicCursor.getLong(songDuration);
songs.add(new Song(id, title, artist, album, duration, paths));
}
while (musicCursor.moveToNext());
}
А вот класс песни, которые несут каждый детали песни:
package andy.propaganda;
import java.io.Serializable;
public class Song implements /*Parcelable*/ Serializable {
private String album;
private String author;
private String artist;
private String name;
private long dataSource;
private long duration;
private String genre;
private String bitRate;
private byte[] image;
public Song(){
image = null;
}
public Song(long id, String name, String artist, String album, long duration, String tmp){
this.album = album;
this.name = name;
this.artist = artist;
this.duration = duration;
this.dataSource = id;
image = null;
this.bitRate = tmp;
}
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getDataSourse() {
return dataSource;
}
public void setDataSourse(long dataSource) {
this.dataSource = dataSource;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public String getBitRate() {
return bitRate;
}
public void setBitRate(String bitRate) {
this.bitRate = bitRate;
}
public byte[] getImage() {
return image;
}
public void setImage(byte[] image) {
this.image = image;
}
public long getDuration() {
return duration;
}
public void setDuration(long duration) {
this.duration = duration;
}
}