MediaStore部分属性解释
来源:互联网 发布:linux 系统备份与恢复 编辑:程序博客网 时间:2024/05/16 17:26
MediaStore部分属性解释
最近尝试开发一个Android的音乐播放器,其中用到了MediaStore获取系统内部的歌曲等信息,先将此总结一下。
歌曲信息
//获取歌曲在系统中的idMediaStore.Audio.Media._ID//获取歌曲的歌名MediaStore.Audio.Media.TITLE;//获取歌曲所在专辑的id MediaStore.Audio.Media.ALBUM_ID;//获取专辑的歌手名MediaStore.Audio.Media.ARTIST//获取歌曲的时长MediaStore.Audio.Media.DURATION//获取歌曲的大小MediaStore.Audio.Media.SIZE//获取专辑名MediaStore.Audio.Media.ALBUM//获取歌曲路径,如xx/xx/xx.mp3ediaStore.Audio.Media.DATA
专辑信息
//获取专辑idMediaStore.Audio.Albums._ID//获取专辑名MediaStore.Audio.Albums.ALBUM//获取专辑歌手MediaStore.Audio.Albums.ARTIST//获取专辑歌曲数MediaStore.Audio.Albums.NUMBER_OF_SONGS
歌手信息
//歌手idMediaStore.Audio.Artists._ID//歌手名MediaStore.Audio.Artists.ARTIST//歌手歌曲数MediaStore.Audio.Artists.NUMBER_OF_TRACKS
文件夹
利用ContentProvider查询的Uri如下:
//查询歌曲信息MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;//查询专辑信息MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI;//查询歌手信息MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI;//查询文件信息MediaStore.Files.getContentUri("external");
//具体查询方法,以查询手机中的歌曲为例。
private static final Uri QUERY_SONG_URI = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;/** * 查询手机里歌曲信息的列 */private static final String[] SONG_PROJECTION = new String[]{ MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ALBUM_ID, MediaStore.Audio.Media.SIZE, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ARTIST_ID, MediaStore.Audio.Media.DURATION};public static List<SongInfo> querySongInfos(Context context) { ContentResolver cr = context.getContentResolver(); Cursor cursor = cr.query( QUERY_SONG_URI, SONG_PROJECTION, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); return parseSongCursor(cursor);}private static List<SongInfo> parseSongCursor(Cursor cursor) { List<SongInfo> songInfos = new ArrayList<>(); while (cursor.moveToNext()) { SongInfo songInfo = new SongInfo(); songInfo.setSongId(cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID))); songInfo.setSongName(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE))); songInfo.setAlbumId(cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID))); songInfo.setArtist(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST))); songInfo.setDuration(cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION))); songInfo.setSize(cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE))); songInfo.setAlbum(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM))); //data就是路径,xx/xx/xx.mp3 String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); songInfo.setData(filePath); String folder = filePath.substring(0, filePath.lastIndexOf(File.separator)); songInfo.setFolder(folder); songInfos.add(songInfo); } return songInfos;}
SongInfo类如下:
public class SongInfo{ /** * 歌曲id */ private int songId; /** * 专辑id */ private int albumId; /** * 歌名 */ private String songName; /** * 歌手 */ private String artist; /** * 时长 */ private int duration; /** * 大小 */ private long size; /** * uri */ private String data; /** * 专辑 */ private String album; /** * 文件夹路径 */ public String folder; public SongInfo() { } public String getAlbum() { return album; } public void setAlbum(String album) { this.album = album; } public int getAlbumId() { return albumId; } public void setAlbumId(int albumId) { this.albumId = albumId; } public String getArtist() { return artist; } public void setArtist(String artist) { this.artist = artist; } public String getData() { return data; } public void setData(String data) { this.data = data; } public int getDuration() { return duration; } public void setDuration(int duration) { this.duration = duration; } public String getFolder() { return folder; } public void setFolder(String folder) { this.folder = folder; } public long getSize() { return size; } public void setSize(long size) { this.size = size; } public int getSongId() { return songId; } public void setSongId(int songId) { this.songId = songId; } public String getSongName() { return songName; } public void setSongName(String songName) { this.songName = songName; }}
附加一个通过歌曲文件获得歌曲内部的专辑封面的方法。
/** 根据歌曲路径获得专辑封面 * @Description 获取专辑封面 * @param filePath 文件路径,like XXX/XXX/XX.mp3 * @return 专辑封面bitmap */public static Bitmap createAlbumArt(final String filePath) { Bitmap bitmap = null; //能够获取多媒体文件元数据的类 MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try { retriever.setDataSource(filePath); //设置数据源 byte[] embedPic = retriever.getEmbeddedPicture(); //得到字节型数据 //bitmap = BitmapFactory.decodeByteArray(embedPic, 0, embedPic.length); //转换为图片 //要优化后再加载 bitmap=BitmapUtil.decodeBitmapByByteArray(embedPic,80,80); } catch (Exception e) { e.printStackTrace(); } finally { try { retriever.release(); } catch (Exception e2) { e2.printStackTrace(); } } return bitmap;}
1 0
- MediaStore部分属性解释
- Active Directoy部分属性解释
- VS2008项目属性的部分解释
- MediaStore
- MediaStore
- MediaStore
- Android MediaStore之Audio常用属性变量
- MediaStore.Audio.Media属性(本地媒体库)
- android配置文档AndroidManifest.xml的部分属性解释
- Android动画---对动画部分属性的解释
- android 多媒体部分学习笔记十三----mediaStore 检索视频
- Linux部分命令解释
- mysql配置文件部分解释
- gcc 部分选项解释
- Linux部分命令解释
- 指针部分疑点解释
- context部分解释
- 部分JVM参数解释
- iOS开发 证书失效解决办法
- 各种音视频编解码学习详解
- hive根据日期获取星期几的方法
- nanyangoj 7 街区最短路径问题
- Python 连接DBF数据库
- MediaStore部分属性解释
- NYOJ 252 01串
- 0--数据的艺术
- 埃米尼亚.伊瓦拉:如何转变职业生涯?
- 第五课:带纹理的立方体
- char 转float(串口数据转换)
- CentOS6.5升级autoconf版本 Autoconf version 2.64 or higher is required
- linux mysql root 忘记密码
- pagePiling.js参数详解