Android扫描本地音乐文件开发案例分享

Android扫描本地音乐文件开发案例分享,第1张

概述一、前言本来觉得soeasy,真是没想到,还搞了老半天,搞的我大汗淋漓,要拍桌子摔键盘了。

一、前言

本来觉得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<String> List = new ArrayList<>();  public static List<String> 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<HashMap<String,Object>> getMp3Infos(Context context)  {    Cursor cursor = context.getContentResolver().query(        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null);    ArrayList mp3Infos = new ArrayList();    for (int i = 0; i < cursor.getCount(); i++) {      cursor.movetoNext();      HashMap<String,Object> 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扫描本地音乐文件开发案例分享所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1149247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存