package com.wm.remusic.dialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.os.AsyncTask;
import android.util.Log;
import android.util.SparseArray;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.PopupWindow;
import android.widget.Toast;
import com.wm.remusic.R;
import com.wm.remusic.downmusic.DownService;
import com.wm.remusic.json.GeDanGeInfo;
import com.wm.remusic.json.MusicFileDownInfo;
import com.wm.remusic.net.MusicFileDownInfoGet;
import com.wm.remusic.net.RequestThreadPool;
import com.wm.remusic.uitl.IConstants;
import com.wm.remusic.uitl.PreferencesUtility;
import java.util.ArrayList;
public class LoadAllDownInfos extends AsyncTask<Void, Void, Boolean> {
private Activity mContext;
private ArrayList<GeDanGeInfo> mList = new ArrayList<GeDanGeInfo>();
private PopupWindow popupWindow;
private int totalSize;
private ArrayList<String> mUrlList = new ArrayList<>();
SparseArray<MusicFileDownInfo> mDownInfoArray = new SparseArray<>();
public LoadAllDownInfos(Activity context, ArrayList<GeDanGeInfo> list) {
mContext = context;
mList = list;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
View view;
if (popupWindow == null) {
LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.loading_circle, null);
popupWindow = new PopupWindow(view, 200, 220);
}
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
// 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.showAtLocation(mContext.getWindow().getDecorView(), Gravity.CENTER, 0, 0);
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
RequestThreadPool.finish();
cancel(true);
}
});
}
@Override
protected Boolean doInBackground(Void... params) {
try {
int le = mList.size();
int downloadBit = PreferencesUtility.getInstance(mContext).getDownMusicBit();
for (int i = 0; i < le; i++) {
RequestThreadPool.post(new MusicFileDownInfoGet(mList.get(i).getSong_id(), i, mDownInfoArray, downloadBit));
}
int tryCount = 0;
while (mDownInfoArray.size() != le && tryCount < 6000) {
tryCount++;
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (mDownInfoArray.size() != le) {
return false;
}
for (int i = 0; i < le; i++) {
totalSize += mDownInfoArray.get(i).getFile_size();
mUrlList.add(mDownInfoArray.get(i).getFile_link());
}
} catch (Exception e) {
e.printStackTrace();
}
// for (int j = 0; j < le; j++) {
// try {
// JsonArray jsonArray = HttpUtil.getResposeJsonObject(BMA.Song.songInfo(mList.get(j).getSong_id())).get("songurl")
// .getAsJsonObject().get("url").getAsJsonArray();
// int len = jsonArray.totalSize();
//
// int downloadBit = PreferencesUtility.getInstance(mContext).getDownMusicBit();
// MusicFileDownInfo musicFileDownInfo = null;
// 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);
// }
// }
// if (musicFileDownInfo != null) {
// mUrlList.add(musicFileDownInfo.getShow_link());
// totalSize += musicFileDownInfo.getFile_size();
// }
//
//
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// }
return true;
}
@Override
protected void onPostExecute(Boolean correct) {
super.onPostExecute(correct);
if (correct) {
String result = null;
totalSize = totalSize / (1024 * 1024);
Log.e("totalSize", totalSize + "");
if (totalSize > 1024) {
result = (float) Math.round((float) totalSize / (1024 * 10)) / 10 + "G";
} else {
result = totalSize + "M";
}
new AlertDialog.Builder(mContext).setTitle("将下载歌曲,大约占用" + result + "空间,确定下载吗")
.setPositiveButton(mContext.getString(R.string.sure), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int len = mList.size();
String[] names = new String[len];
String[] artists = new String[len];
for (int i = 0; i < len; i++) {
names[i] = mList.get(i).getTitle();
artists[i] = mList.get(i).getAuthor();
}
Intent intent = new Intent();
intent.putExtra("names", names);
intent.putExtra("artists", artists);
intent.putExtra("urls", mUrlList);
intent.setAction(DownService.ADD_MULTI_DOWNTASK);
intent.setPackage(IConstants.PACKAGE);
mContext.startService(intent);
dialog.dismiss();
}
}).
setNegativeButton(mContext.getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
RequestThreadPool.finish();
cancel(true);
dialog.dismiss();
}
}).show();
} else {
Toast.makeText(mContext, "歌单列表中有信息错误,请重试", Toast.LENGTH_SHORT).show();
}
popupWindow.dismiss();
}
}