一、前言

本来觉得so easy,真是没想到,还搞了老半天,搞的我大汗淋漓,要拍桌子摔键盘了。

本想实现的功能是:

通过网易云音乐/百度音乐/QQ音乐/酷狗音乐中一个API,通过关键词/歌手/歌词来搜索相关歌曲信息,然后在线播放、下载到本地,不过目前来看,使用API还是有一点问题。通过浏览器访问,问题不大,例如下图:

但是想通过手机访问的时候,问题就出现了,同样的参数,结果很不一样,而且基本搜不到自己想要的,后来换做通过自己的服务器去访问,还是搜不到,后来查了一下资料,暂时也没解决。于是,目前就只是通过扫描QQ音乐已经下载的歌曲,来实现播放功能。这篇博文里,我先记录下扫描音乐文件吧,至于播放和下载,后面如果自己整理好了,再贴出来。

关于网易云音乐/百度音乐/QQ音乐/酷狗音乐API的使用,有朋友如果知道适合Android的,请求推荐!

二、扫描本地音乐文件

首先通过QQ音乐已经下载好歌。

扫描实现:

//扫描本地音乐

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

{

new Thread()

{

@Override

public void run()

{

try

{

String[] ext = { ".mp3" };

File file = new File(Environment.getExternalStorageDirectory()+"/Android/data/com.tencent.qqmusic/files/qqmusic/song");//可以把"//"这一串都去掉,扫面范围是整个SD卡,我嫌慢,而且扫出来很多...不是我想要的歌曲,最后还是直接写成QQ音乐的下载目录了,其实自己的APP支持下载的话,可以把歌曲下载的指定目录,然后扫描这个指定目录就行了~全局扫描的确不太合适,又不是杀毒..

localMusicList = Common.searchMp3Infos(file,ext);

hander.sendEmptyMessage(SEARCH_MUSIC_SUCCESS);

}catch (Exception e){}

}

}.start();

}

下面就是Common.searchMp3Infos()的代码

//扫描实现

static List list = new ArrayList<>();

public static List searchMp3Infos(File file, String[] ext) {

if (file != null) {

if (file.isDirectory()) {

File[] listFile = file.listFiles();

if (listFile != null) {

for (int i = 0; i < listFile.length; i++) {

searchMp3Infos(listFile[i], ext);

}

}

} else {

String filename = file.getAbsolutePath();

for (int i = 0; i < ext.length; i++) {

if (filename.endsWith(ext[i])) {

list.add(filename);

break;

}

}

}

}

return list;

}

然后在handler里通过适配器在listview中显示,效果就简单像这个样子,还是那句话,别嫌弃它丑:

嗯,先把它扫出来吧,显示问题再改~~~

另外一个方法,自己测试了一下暂时没扫出来,那就是从SQLite数据库扫音乐文件,很多朋友都提到了,但是不知道自己的问题出哪里了,只能扫到录音文件~我也贴出来,供参考。

public static List> getMp3Infos(Context context)

{

Cursor cursor = context.getContentResolver().query(

MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,

null, null, null);

ArrayList mp3Infos = new ArrayList();

for (int i = 0; i < cursor.getCount(); i++) {

cursor.moveToNext();

HashMap musicMap = new HashMap<>();

long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media._ID));//音乐id

String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));//音乐标题

String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));//艺术家

String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));//专辑

long albumid = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));//专辑id

long 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));//文件路径

int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));//是否为音乐

if (isMusic != 0) {

musicMap.put("id",id);

musicMap.put("title",title);

musicMap.put("artist",artist);

musicMap.put("album",album);

musicMap.put("albumid",albumid);

musicMap.put("duration",duration);

musicMap.put("size",size);

musicMap.put("url",url);

musicMap.put("isMusic",isMusic);

mp3Infos.add(musicMap);

}

}

cursor.close();

return mp3Infos;

}

以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。

Android 自动扫描歌曲,Android扫描本地音乐文件开发案例分享相关推荐

  1. Android 音乐APP(一)扫描本地音乐

    效果图 音乐APP 扫描本地音乐 前言 正文 ① 新建项目 ② 第三方依赖 ③ 权限和基础配置 ④ 页面设计 ⑤ 权限请求 ⑥ 获取音乐数据 ⑦ 数据显示 结语 前言   这个项目纯粹的就是心血来潮, ...

  2. 有没有java自编歌曲,高仿网易云音乐一(可扫描本地音乐播放)

    最近闲下来做了个仿网易云音乐的音乐播放器 效果图: p1.png p2.png p3.png p4.png p5.png p6.png 项目下载地址 闪屏 1.gif 扫描本地音乐 3.gif 播放 ...

  3. android webView不能加载本地html文件问题

    android中可以加载本地html文件,通过JavaScript进行交互,其中html文件放到assets文件夹下,在调用的时候如下: webView.loadUrl("file:///a ...

  4. android 浏览器打开本地html文件,如何在Android浏览器中加载本地HTML文件

    我试图在设备浏览器中加载本地html文件.我尝试过使用WebView,但它不适用于所有设备.如何在Android浏览器中加载本地HTML文件 //WebView method that didnt w ...

  5. 高仿网易云音乐一(可扫描本地音乐播放)

    最近闲下来做了个仿网易云音乐的音乐播放器 效果图: 项目下载地址 https://github.com/PangHaHa12138/MusicPlayerdemo 闪屏 扫描本地音乐 播放 仿探探 仿 ...

  6. Android--MediaPlayer(实现列表选歌,上一首,下一首,清空播放列表,搜索本地音乐文件)...

    Android--MediaPlayer(实现列表选歌,上一首,下一首,清空播放列表,搜索本地音乐文件) 下载链接:http://download.csdn.net/detail/zlqqhs/507 ...

  7. 获取本地音乐文件的专辑,图片,音乐信息

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

  8. Android音乐播放器制作(一)扫描本地音乐显示在手机上

    思路 首先是扫描本地所有的音频文件,然后全部装进集合当中,接下来就是用ListView展示在屏幕上,大概就是这几个步骤了,接下来细讲 创建一个容器 进行过数据解析的朋友都应该知道JavaBean吧,用 ...

  9. Android MediaPlayer 音乐播放器扫描 本地音乐、上一曲、下一曲切歌、播放本地音乐

    Android MediaPlayer 本地音乐播放器 运行截图 项目请在真机(自己的手机)上测试运行,因为我不喜欢用虚拟机. 为了不浪费您的时间,先看一下运行的效果图, 一进去先进行音乐扫描,然后列 ...

最新文章

  1. Unix 和 Linux
  2. 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )
  3. 数据中台实战入门篇:数据中台对内、对外合作机制
  4. Oracle按用户进行统计信息更新
  5. java jbutton 不显示_java – JButton中的图像未显示
  6. 进程、线程、信号量和互斥锁
  7. 自定义SharePoint 2013 元数据选择控件
  8. SAP License:大陆SAP用户清单
  9. mysql如何查看dbid_如何获得数据库的DBID
  10. 2017杭电ACM集训队单人排位赛 - 1(ALL题解)
  11. MySQL基础一些概念一些用法
  12. 图像patch feature源码
  13. 软件测试每日例会,每日例会(二).md
  14. 3.7V转5V电路图芯片,3.7V升压5V的升压芯片
  15. Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)启动监听器无法打开,报错!
  16. CES2018,三星为何将MicroLED应用于电视而非手机?
  17. Ableton Live 10 Suite v10.1.42 WiN-MAC 音乐制作宿主软件
  18. 鸿蒙智慧屏pro,鸿蒙OS带来了什么?荣耀智慧屏PRO现场轻体验
  19. 计算机数学基础教案,大学计算机基础教案51.doc
  20. php168上传空间常见问题

热门文章

  1. 今晚直播丨管中窥豹 - PostgreSQL、openGauss、达梦和OceanBase的初步介绍
  2. 聚焦openEuler Summit,解锁云原生、开源等领域的实践干货
  3. 盘点分库分表中,你一定要避开的那些坑!
  4. 【华为云技术分享】MongoDB经典故障系列二:如何限制最大连接数?
  5. 虚拟机从网卡路由问题
  6. 华为云鲲鹏云服务器RC6正式公测,多元算力加速企业创新升级
  7. 编程建立一通讯簿C语言,C语言编程问题用C语言编个学生通讯录管理系统,功能有:①创建通讯 爱问知识人...
  8. matlab三角函数降次,三角函数降次公式及推导过程
  9. Kotlin学习笔记 第二章 类与对象 第十一节 枚举类 第八节密封类
  10. 最长回文子串_【每日编程142期】最长回文子串II