package com.wm.remusic.downmusic; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Environment; import android.widget.Toast; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; import com.wm.remusic.MainApplication; import com.wm.remusic.json.MusicDetailInfo; import com.wm.remusic.json.MusicFileDownInfo; import com.wm.remusic.net.BMA; import com.wm.remusic.net.HttpUtil; import com.wm.remusic.uitl.IConstants; import com.wm.remusic.uitl.PreferencesUtility; import java.io.File; /** * Created by wm on 2016/5/30. */ public class Down { public static void downMusic(final Context context, final String id, final String name, final String artist) { new AsyncTask<String, String, MusicFileDownInfo>() { @Override protected MusicFileDownInfo doInBackground(final String... name) { try { JsonArray jsonArray = HttpUtil.getResposeJsonObject(BMA.Song.songInfo(id).trim()).get("songurl") .getAsJsonObject().get("url").getAsJsonArray(); int len = jsonArray.size(); int downloadBit = PreferencesUtility.getInstance(context).getDownMusicBit(); MusicFileDownInfo musicFileDownInfo; for (int i = len - 1; i > -1; i--) { int bit = Integer.parseInt(jsonArray.get(i).getAsJsonObject().get("file_bitrate").toString()); if (bit == downloadBit) { musicFileDownInfo = MainApplication.gsonInstance().fromJson(jsonArray.get(i), MusicFileDownInfo.class); return musicFileDownInfo; } else if (bit < downloadBit && bit >= 64) { musicFileDownInfo = MainApplication.gsonInstance().fromJson(jsonArray.get(i), MusicFileDownInfo.class); return musicFileDownInfo; } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(MusicFileDownInfo musicFileDownInfo) { if (musicFileDownInfo != null && musicFileDownInfo.getShow_link() != null) { Intent i = new Intent(DownService.ADD_DOWNTASK); i.setAction(DownService.ADD_DOWNTASK); i.putExtra("id", id); i.putExtra("name", name); i.putExtra("artist", artist); i.putExtra("url", musicFileDownInfo.getShow_link()); i.setPackage(IConstants.PACKAGE); context.startService(i); }else { Toast.makeText(context,"该歌曲没有下载连接",Toast.LENGTH_SHORT).show(); } } }.execute(); } public static MusicFileDownInfo getUrl(final Context context, final String id) { MusicFileDownInfo musicFileDownInfo = null; try { JsonArray jsonArray = HttpUtil.getResposeJsonObject(BMA.Song.songInfo(id).trim(), context, false).get("songurl") .getAsJsonObject().get("url").getAsJsonArray(); int len = jsonArray.size(); int downloadBit = 192; for (int i = len - 1; i > -1; i--) { int bit = Integer.parseInt(jsonArray.get(i).getAsJsonObject().get("file_bitrate").toString()); if (bit == downloadBit) { musicFileDownInfo = MainApplication.gsonInstance().fromJson(jsonArray.get(i), MusicFileDownInfo.class); } else if (bit < downloadBit && bit >= 64) { musicFileDownInfo = MainApplication.gsonInstance().fromJson(jsonArray.get(i), MusicFileDownInfo.class); } } } catch (NumberFormatException e) { e.printStackTrace(); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (NullPointerException e) { e.printStackTrace(); } return musicFileDownInfo; } public static MusicDetailInfo getInfo(final String id) { MusicDetailInfo info = null; try { JsonObject jsonObject = HttpUtil.getResposeJsonObject(BMA.Song.songBaseInfo(id).trim()).get("result") .getAsJsonObject().get("items").getAsJsonArray().get(0).getAsJsonObject(); info = MainApplication.gsonInstance().fromJson(jsonObject, MusicDetailInfo.class); } catch (Exception e) { e.printStackTrace(); } return info; } static class getUrl extends Thread { boolean isRun = true; String id; MusicFileDownInfo musicFileDownInfo; public getUrl(String id) { this.id = id; } @Override public void run() { JsonArray jsonArray = HttpUtil.getResposeJsonObject(BMA.Song.songInfo(id).trim()).get("songurl") .getAsJsonObject().get("url").getAsJsonArray(); int len = jsonArray.size(); int downloadBit = 128; for (int i = len - 1; i > -1; i--) { int bit = Integer.parseInt(jsonArray.get(i).getAsJsonObject().get("file_bitrate").toString()); if (bit == downloadBit) { musicFileDownInfo = MainApplication.gsonInstance().fromJson(jsonArray.get(i), MusicFileDownInfo.class); } else if (bit < downloadBit && bit >= 64) { musicFileDownInfo = MainApplication.gsonInstance().fromJson(jsonArray.get(i), MusicFileDownInfo.class); } } } } }