获取本地音乐文件的专辑,图片,音乐信息
2016-07-22 22:50
344 查看
今天跟大家分享一下如何获取本地音乐文件中的各种音乐信息,包括音乐的歌名,歌手,曲长,专辑,专辑图片
下面还有getMusicBitmap方法
除去上面使用到的 还有
String year = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.YEAR));//获取发行年份
Int size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));//获取歌曲文件大小
等等。
private String tilte;//歌名 private String artist;//歌手 private Bitmap bitmap;//专辑海报 private long duration;//时长 private String path_music;//当前播放的歌曲路径
ContentResolver musicResolver = getContentResolver(); Cursor cursor = null;
cursor = musicResolver.query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Audio.Media.DATA + "= ? ", new String[]{path_music}, null); if (cursor != null && cursor.getCount() > 0) { cursor.moveToFirst(); long ID = cursor.getLong(cursor .getColumnIndex(MediaStore.Audio.Media._ID)); //音乐id tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)); artist = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.ARTIST)); // 艺术家 String album = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.ALBUM)); //专辑 duration = cursor.getLong(cursor .getColumnIndex(MediaStore.Audio.Media.DURATION)); // 时长 long size = cursor.getLong(cursor .getColumnIndex(MediaStore.Audio.Media.SIZE)); String url = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.DATA)); long albumId = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID)); bitmap = getMusicBitemp(getApplicationContext(), ID, albumId);
下面还有getMusicBitmap方法
private static final Uri sArtworkUri = Uri .parse("content://media/external/audio/albumart"); public static Bitmap getMusicBitemp(Context context, long songid, long albumid) { Bitmap bm = null; // 专辑id和歌曲id小于0说明没有专辑、歌曲,并抛出异常 if (albumid < 0 && songid < 0) { throw new IllegalArgumentException( "Must specify an album or a song id"); } try { if (albumid < 0) { Uri uri = Uri.parse("content://media/external/audio/media/" + songid + "/albumart"); ParcelFileDescriptor pfd = context.getContentResolver() .openFileDescriptor(uri, "r"); if (pfd != null) { FileDescriptor fd = pfd.getFileDescriptor(); bm = BitmapFactory.decodeFileDescriptor(fd); } } else { Uri uri = ContentUris.withAppendedId(sArtworkUri, albumid); ParcelFileDescriptor pfd = context.getContentResolver() .openFileDescriptor(uri, "r"); if (pfd != null) { FileDescriptor fd = pfd.getFileDescriptor(); bm = BitmapFactory.decodeFileDescriptor(fd); } else { return null; } } } catch (FileNotFoundException ex) { } //如果获取的bitmap为空,则返回一个默认的bitmap if (bm == null) { Resources resources = context.getResources(); Drawable drawable = resources.getDrawable(R.drawable.back_iv); //Drawable 转 Bitmap BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; bm = bitmapDrawable.getBitmap(); } return Bitmap.createScaledBitmap(bm, 150, 150, true); }
除去上面使用到的 还有
String year = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.YEAR));//获取发行年份
Int size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));//获取歌曲文件大小
等等。
相关文章推荐
- [Unity优化]减少顶点数目
- 关于JavaWeb如何实现用户类似站内信功能
- python DNS处理模块dnspython
- 图像视频数据集网站
- 数据结构 线性链表栈
- VB程序学习代码记录20160722(2)
- iOS开发debug跟release版本log屏蔽方法
- 详解Less运算符和函数
- 【NOIP2013提高组T5】花匠-O(n)横扫做法
- Node.js实现单页面爬虫
- [置顶] for循环的经典程序分析
- 【杭电】HDU 1052 Tian Ji -- The Horse Racing
- 使用Android Studio运行Android程序,出现错误:Error:java.lang.UnsupportedClassVersionError: com/android/dx/comman
- java学习之路之基本语法-程序流程控制
- Android——ListView控件(Android Studio)
- MarkWord - 可发布博客的 Markdown编辑器 代码开源
- HDU 5735 Born Slippy(dp+优化)
- 好久没写博客了,纪念一下。
- newlisp读取文件性能测试
- TCP长连接和短连接原理