Optimize large wallpaper

pull/605/head
jhengazuki 6 months ago
parent bf0c649e22
commit 8a71ec9535
  1. 19
      app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java

@ -4,19 +4,21 @@ import android.graphics.Bitmap;
import android.text.TextUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.utils.Download;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Path;
import java.io.File;
import java.io.FileOutputStream;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@ -76,12 +78,9 @@ public class WallConfig {
private void loadConfig(Callback callback) {
try {
byte[] data = OkHttp.bytes(UrlUtil.convert(getUrl()));
if (data.length == 0) throw new RuntimeException();
Path.write(FileUtil.getWall(0), data);
createSnapshot(data);
config.update();
download();
refresh(0);
config.update();
App.post(callback::success);
} catch (Throwable e) {
if (TextUtils.isEmpty(config.getUrl())) App.post(() -> callback.error(""));
@ -90,8 +89,12 @@ public class WallConfig {
}
}
private void createSnapshot(byte[] data) throws Exception {
Bitmap bitmap = Glide.with(App.get()).asBitmap().load(data).override(ResUtil.getScreenWidth(), ResUtil.getScreenHeight()).submit().get();
private void download() throws Exception {
File file = FileUtil.getWall(0);
if (getUrl().startsWith("file")) Path.copy(Path.local(getUrl()), file);
else Download.create(UrlUtil.convert(getUrl()), file).start();
if (file.length() == 0) throw new RuntimeException();
Bitmap bitmap = Glide.with(App.get()).asBitmap().load(file).override(ResUtil.getScreenWidth(), ResUtil.getScreenHeight()).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).submit().get();
try (FileOutputStream fos = new FileOutputStream(FileUtil.getWallCache())) {
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
}

Loading…
Cancel
Save