今天跟大家分享一下如何获取本地音乐文件中的各种音乐信息,包括音乐的歌名,歌手,曲长,专辑,专辑图片

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));//获取歌曲文件大小

等等。

获取本地音乐文件的专辑,图片,音乐信息相关推荐

  1. 用 Windows Media Player 在线匹配歌曲文件的专辑图片,音乐信息等并写入歌曲文件

    如何用 Windows Media Player 在线匹配歌曲文件的专辑图片,音乐信息等并写入歌曲文件 相信大家都遇到过这样一个问题,自己下载的歌曲文件名和歌曲内部的信息(标题.艺术家.唱片集等)杂乱 ...

  2. vue获取本地php数据,Vue-cli项目获取本地json文件数据的实例

    下面我就为大家分享一篇Vue-cli项目获取本地json文件数据的实例,具有很好的参考价值,希望对大家有所帮助. 在自己做的vue demo项目中,我想通过在本地添加一些json数据,写到json文件 ...

  3. 如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片

    在项目开发的时候,有可能会有这样的一种需求:有一段视频需要展示给用户,在界面上先展示视频上的某一帧图片,用户点击的时候再去获取视频资源进行播放.这时,服务器会先给我们返回视频的url,这个时候就需要通 ...

  4. 获取本地json文件

    方法一:vue中获取本地json文件 //通过json文件路径引入 import jsonData from './***.json' //定义一个变量用于接收数据 data() {return {c ...

  5. 获取音乐文件中包含的一些信息,如封面图片,时长等(MusicUtils)

    MusicUtils源码: import android.graphics.Bitmap import android.graphics.BitmapFactory import android.gr ...

  6. 获取本地 qt_用QT实现视频/音乐播放组件

    前言 我已经有四五天没有发布文章了,趁着这个周末有空,就又开始构思我们自己的QT组件库中的新组件,思考还有哪些有用.有趣.值得研究学习并构建实现的组件,于是又有了两个新的目标,即多媒体播放组件和地图组 ...

  7. linux给音乐添加封面,利用ffmpeg读取音乐文件的专辑信息(包括专辑封面图片)

    工作原理 读取metadata AVFormatContext 结构体中有一个属性是metadata,我们在读取一个多媒体文件的时候,可以通过AVDictionaryEntry访问这个属性的数据. A ...

  8. 利用ffmpeg读取音乐文件的专辑信息(包括专辑封面图片)

    工作原理 读取metadata AVFormatContext 结构体中有一个属性是metadata,我们在读取一个多媒体文件的时候,可以通过AVDictionaryEntry访问这个属性的数据. A ...

  9. android 音乐播放器专辑图片旋转,Android实现网易云音乐的旋转专辑View

    本文实例为大家分享了Android实现网易云音乐的旋转专辑View,供大家参考,具体内容如下 一.前言 最近做过 类似网易云音乐专辑唱片的效果,这里记录下开发思路,仅供参考.但需求不完全与网易云音乐一 ...

最新文章

  1. android 有效载荷大图,避OOM
  2. 反应机理_过敏反应的发生机理及表现
  3. 菜鸟学Linux 第090篇笔记 corosync+drbd+mysql
  4. MySQL具体解释(21)------------缓存參数优化
  5. MyBatis 缓存详解-缓存体系结构
  6. 旅途人物之二:幸福的孩子们
  7. python selenium_自动化测试:Selenium+Python环境搭建
  8. matlab里vpa怎么用_“学校里的师兄师姐,用英文怎么说?”
  9. 客户引导你,还是你引导客户?
  10. STM32F429HAL库UART学习笔记
  11. systemtap的一些总结
  12. Atitit refact art 重构的艺术 目录 1. Concept 1 1.1. Bp 1 2. Prob 2 3. Tool 2 1.Concept 1. legacy code遗留代
  13. C++中volatile的作用
  14. http禁用缓存、文件下载
  15. TextView scrollbars setting
  16. OS学习笔记-18(清华大学慕课)信号量
  17. 【Web技术】1064- 前端9种图片格式基础知识, 你应该知道的
  18. 加州欧文大学计算机申请,美国加州大学欧文分校信息与计算机科学专业申请条件.pdf...
  19. Android模仿youtube的拖拽视频效果
  20. 自定义alert和confirm的效果,个人感觉蛮好使用的

热门文章

  1. 敏感字段加密,叶俊峰
  2. 智和网管平台国产化解决方案
  3. android 发qq,腾讯发布QQ轻聊版 for Android V3.4.3版
  4. 如何使用AD账号登录腾讯企业邮箱?
  5. 瑞芯微1126环境配置说明
  6. 基于matlab的蝗虫优化(Grasshopper Optimization Algorithm,GOA)算法仿真
  7. 如何从外网SSH访问家中的树莓派?
  8. windows远程桌面连接任务栏显示问题
  9. 技术债务研究综述X4
  10. CSP2021提高组游记