MediaStore是安卓系统自带的多媒体系统数据库,他在每次开机时刷新一次,可以通过Cursor这个类对数据库进行访问与修改,修改之后需用广播强制刷新。

使用Cursor必须通过Context获得ContentResolver的对象实例。

Cursor cursor1 = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null);

代码中的context既是调用该函数的活动的对象,先上个封装了音乐信息的类

public class Music {
private String filename;
private String title;
private int during;
private String singer;
private String type;
private String size;
private String fileUrl;
public Music(String filename,String title,int during,String singer,String type,String size,String fileUrl){
this.filename = filename;
this.title = title;
this.during = during;
this.singer = singer;
this.type = type;
this.size = size;
this.fileUrl = fileUrl;
}
public String toString(){
return "song[filename="+filename+", title="+title+", during="+during+", singer="+singer+", type="+type+", size="+size+", fileUrl="+fileUrl+"]";
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getDuring() {
return during;
}
public void setDuring(int during) {
this.during = during;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getFileUrl() {
return fileUrl;
}
public void setFileUrl(String fileUrl) {
this.fileUrl = fileUrl;
} }

下面就是用Cursor操作数据库的帮助类了

public class MusicHelper{
public static List<Music> songs = new ArrayList<Music>();
public static List<Music> getAllsongs(Context context){
Cursor cursor1 = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null);
getcorrSongs(cursor1);
Cursor cursor2 = context.getContentResolver().query(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,null,null,null,null);
getcorrSongs(cursor2);
return songs;
}
public static void getcorrSongs(Cursor cursor){
Music song = null;
if(cursor != null){
while(cursor.moveToNext()){
String filename = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));
String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
int during = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
String singer = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
String type = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.MIME_TYPE));
String size = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));
String date = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
song = new Music(filename,title,during,singer,type,size,date);
songs.add(song);
}
cursor.close();
}
}
}

参数content即用活动的this引用传入。

allsongs = MusicHelper.getAllsongs(this);

最新文章

  1. C# - 缓存OutputCache(二)缓存详细介绍
  2. IIS发布WCF服务项目之本地
  3. 移动平台对于META标签的定义[转]
  4. git中找回丢失的对象
  5. poj 2142 扩展欧几里得解ax+by=c
  6. linux文件编码
  7. aChartEngine图表显示
  8. linux添加用户、用户组、权限
  9. 10.18 noip模拟试题
  10. Spring核心技术
  11. 2017年3月23日 坚果性能测试Loadrunner 免费公开课
  12. [Swift]LeetCode934. 最短的桥 | Shortest Bridge
  13. java实现栈的简单操作
  14. DashBoard创建各种表(一)
  15. spring boot 拦截异常 统一处理
  16. TextView 文字拼接
  17. Ansible 小手册系列 十四(条件判断和循环)
  18. [java web]Idea+maven+spring4+hibernate5+struts2整合过程
  19. Lambert漫反射的BRDF
  20. sqlserver 数据迁移

热门文章

  1. Flat UI theme--扁平化的UI
  2. 轻量级的绘制图表js库--Morris.js
  3. I/O操作总结(一)
  4. spring事务的开启方式(编程式和声明式)
  5. 帝国empirecms去除后台登陆认证码
  6. fpathconf
  7. 将一个字符与对应Ascii码互转
  8. 【TensorFlow入门完全指南】神经网络篇&#183;卷积神经网络
  9. linux python升级及全局环境变量设置
  10. UI高端课程