package com.xiaomi.xms.sales.util;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.text.TextUtils;
import com.xiaomi.xms.sales.ShopApp;
import com.xiaomi.xms.sales.loader.ImageLoader;
import com.xiaomi.xms.sales.model.Image;
import com.xiaomi.xms.sales.request.HostManager;
import com.xiaomi.xms.sales.request.Request;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class SplashUtil {
private static final String IMAGE_PATH = Environment.getExternalStorageDirectory() + "/mishop/";
private static final String FILENAME = "splash.jpg";
private static final String JSON_TAG_START = "start";
private static final String JSON_TAG_END = "end";
private static final String JSON_TAG_URL = "url";
public static Bitmap getSplashImage() {
Bitmap bmp = null;
if (isSplashValid()) {
try {
bmp = BitmapFactory.decodeFileDescriptor(new FileInputStream(IMAGE_PATH + FILENAME).getFD());
} catch (Exception e) {
Utils.Preference.removePref(ShopApp.getContext(),
Constants.Prefence.PREF_KEY_SPLASH_INFO);
}
}
new LoadInfoThread().start();
return bmp;
}
private static boolean isSplashValid() {
String info = Utils.Preference.getStringPref(ShopApp.getContext(),
Constants.Prefence.PREF_KEY_SPLASH_INFO, "");
if (TextUtils.isEmpty(info)) {
return false;
}
if (!new File(IMAGE_PATH + FILENAME).exists()) {
return false;
}
try {
JSONObject json = new JSONObject(info);
String start = json.getString(JSON_TAG_START);
String end = json.getString(JSON_TAG_END);
long s = Long.parseLong(start);
long e = Long.parseLong(end);
long now = System.currentTimeMillis() / 1000;
if (now >= s && now <= e) {
return true;
} else {
return false;
}
} catch (Exception e) {
}
return false;
}
private static class LoadInfoThread extends Thread {
@Override
public void run() {
try {
Request r = new Request(HostManager.getSplash());
if (r.getStatus() == Request.STATUS_OK) {
JSONObject json = r.requestJSON().getJSONObject("data");
if (!json.toString().equals(
Utils.Preference.getStringPref(ShopApp.getContext(),
Constants.Prefence.PREF_KEY_SPLASH_INFO, ""))) {
new LoadImageThread(json).start();
}
}
} catch (Exception e) {
}
}
}
private static class LoadImageThread extends Thread {
private JSONObject mJson;
private String mImageUrl;
public LoadImageThread(JSONObject json) {
mJson = json;
try {
mImageUrl = json.getString(JSON_TAG_URL);
} catch (JSONException e) {
}
}
private boolean saveFile(Bitmap bm, String path, String fileName) {
File dirFile = new File(path);
if (!dirFile.exists()) {
dirFile.mkdir();
}
File myCaptureFile = new File(path + fileName);
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(
myCaptureFile));
bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
bos.flush();
bos.close();
} catch (IOException e) {
return false;
}
return true;
}
@Override
public void run() {
Image image = new Image(mImageUrl);
Bitmap bitmap = ImageLoader.getInstance().syncLoadLocalImage(image, true);
if (bitmap == null) {
return;
}
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
return;
}
if (saveFile(bitmap, IMAGE_PATH, FILENAME)) {
Utils.Preference.setStringPref(ShopApp.getContext(),
Constants.Prefence.PREF_KEY_SPLASH_INFO, mJson.toString());
}
bitmap.recycle();
bitmap = null;
}
}
}