最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android掃描本地音樂文件開發(fā)案例分享

 更新時間:2016年05月24日 14:11:30   作者:不正經(jīng)的小二哥  
這篇文章主要為大家分享了Android掃描本地音樂文件開發(fā)案例,感興趣的小伙伴們可以參考一下

一、前言

本來覺得so easy,真是沒想到,還搞了老半天,搞的我大汗淋漓,要拍桌子摔鍵盤了。
本想實現(xiàn)的功能是:
通過網(wǎng)易云音樂/百度音樂/QQ音樂/酷狗音樂中一個API,通過關(guān)鍵詞/歌手/歌詞來搜索相關(guān)歌曲信息,然后在線播放、下載到本地,不過目前來看,使用API還是有一點問題。通過瀏覽器訪問,問題不大,例如下圖:

但是想通過手機訪問的時候,問題就出現(xiàn)了,同樣的參數(shù),結(jié)果很不一樣,而且基本搜不到自己想要的,后來換做通過自己的服務(wù)器去訪問,還是搜不到,后來查了一下資料,暫時也沒解決。于是,目前就只是通過掃描QQ音樂已經(jīng)下載的歌曲,來實現(xiàn)播放功能。這篇博文里,我先記錄下掃描音樂文件吧,至于播放和下載,后面如果自己整理好了,再貼出來。
關(guān)于網(wǎng)易云音樂/百度音樂/QQ音樂/酷狗音樂API的使用,有朋友如果知道適合Android的,請求推薦!

二、掃描本地音樂文件

首先通過QQ音樂已經(jīng)下載好歌。
掃描實現(xiàn):

//掃描本地音樂
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");//可以把"http://////"這一串都去掉,掃面范圍是整個SD卡,我嫌慢,而且掃出來很多...不是我想要的歌曲,最后還是直接寫成QQ音樂的下載目錄了,其實自己的APP支持下載的話,可以把歌曲下載的指定目錄,然后掃描這個指定目錄就行了~全局掃描的確不太合適,又不是殺毒..
      localMusicList = Common.searchMp3Infos(file,ext);
      hander.sendEmptyMessage(SEARCH_MUSIC_SUCCESS);
      }catch (Exception e){}
      }
    }.start();
}

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

//掃描實現(xiàn)
  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數(shù)據(jù)庫掃音樂文件,很多朋友都提到了,但是不知道自己的問題出哪里了,只能掃到錄音文件~我也貼出來,供參考。

public static List<HashMap<String, Object>> 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<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));//音樂標(biāo)題
      String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));//藝術(shù)家
      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;
  }

以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)Android軟件編程有所幫助。

相關(guān)文章

最新評論

台中市| 湘潭县| 滦平县| 高邑县| 兰西县| 沙河市| 石家庄市| 南昌市| 龙江县| 惠来县| 濮阳县| 南澳县| 明溪县| 镇雄县| 大渡口区| 尼玛县| 花莲市| 姚安县| 宜兴市| 兰州市| 东兴市| 大石桥市| 四子王旗| 九龙县| 图木舒克市| 芮城县| 凤阳县| 万全县| 翁牛特旗| 米易县| 晴隆县| 泾阳县| 苏尼特左旗| 谢通门县| 华安县| 油尖旺区| 江孜县| 如皋市| 东安县| 叙永县| 简阳市|