From 32b8402e5cf546cd6f4a6476ad56a7366680e487 Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Fri, 24 Jan 2025 20:30:44 +0700 Subject: [PATCH 01/98] no more using Glide because its sucks, i've made my own Glide which is faster and more optimized in term of internet data usage :P --- .../tw/music/streamer/StreamingActivity.java | 17 +- .../streamer/adapter/ZZRandomSongAdapter.java | 5 +- .../music/streamer/adapter/ZZSongAdapter.java | 5 +- .../streamer/loader/ZryteZeneImageLoader.java | 152 ++++++++++++++++++ .../notification/ZryteZeneNotification.java | 21 +-- 5 files changed, 167 insertions(+), 33 deletions(-) create mode 100644 app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java diff --git a/app/src/main/java/tw/music/streamer/StreamingActivity.java b/app/src/main/java/tw/music/streamer/StreamingActivity.java index 8690ac7..e6c3bd2 100644 --- a/app/src/main/java/tw/music/streamer/StreamingActivity.java +++ b/app/src/main/java/tw/music/streamer/StreamingActivity.java @@ -21,11 +21,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.GridLayoutManager; -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; - import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseReference; @@ -41,6 +36,7 @@ import tw.music.streamer.adapter.ZZOnClickListener; import tw.music.streamer.adapter.ZZRandomSongAdapter; import tw.music.streamer.service.ZryteZenePlay; +import tw.music.streamer.loader.ZryteZeneImageLoader; public class StreamingActivity extends AppCompatActivity { @@ -80,6 +76,7 @@ protected void onCreate(Bundle a) { } private void initVariables(Context a) { + ZryteZeneImageLoader.getInstance(a); zz_songs = new ArrayList<>(); zz_songs2 = new ArrayList<>(); zz_click1 = new ZZOnClickListener() { @@ -132,7 +129,7 @@ private void initFirebaseListener(final Context z) { if (a.isSuccessful()) { DataSnapshot b = a.getResult(); if (b.exists() && b.hasChild("url")) { - Glide.with(z).load(b.child("url").getValue(String.class)).diskCacheStrategy(DiskCacheStrategy.ALL).apply(RequestOptions.circleCropTransform()).into(user_icon); + ZryteZeneImageLoader.getInstance(z).load(b.child("url").getValue(String.class),user_icon); } } }); @@ -303,9 +300,9 @@ private void playFromZZSongs(int a) { mp_artist.setText(zz_songs.get(a).song_artist); mp_title.setText(zz_songs.get(a).song_name); mp_play.setImageResource(R.drawable.ic_pause_white); - Glide.with(getApplicationContext()).load(zz_songs.get(a).url_icon).diskCacheStrategy(DiskCacheStrategy.ALL).transform(new RoundedCorners(dip(5))).into(mp_icon); + ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_icon, mp_icon); mp_base.setVisibility(View.VISIBLE); - Glide.with(getApplicationContext()).load(zz_songs.get(a).url_cover).diskCacheStrategy(DiskCacheStrategy.ALL).into(bg_drop); + ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_cover, bg_drop); mp_bar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(zz_songs.get(a).color1))); zz.play(zz_songs.get(a)); } @@ -318,9 +315,9 @@ private void loadSongFromKey(String a) { bg_drop.setVisibility(View.VISIBLE); mp_artist.setText(c.child("artist").getValue(String.class)); mp_title.setText(c.child("title").getValue(String.class)); - Glide.with(getApplicationContext()).load(c.child("icon").getValue(String.class)).diskCacheStrategy(DiskCacheStrategy.ALL).transform(new RoundedCorners(dip(5))).into(mp_icon); + ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("icon").getValue(String.class), mp_icon); mp_base.setVisibility(View.VISIBLE); - Glide.with(getApplicationContext()).load(c.child("cover").getValue(String.class)).diskCacheStrategy(DiskCacheStrategy.ALL).into(bg_drop); + ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("cover").getValue(String.class), bg_drop); mp_bar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(c.child("color-bline").getValue(String.class)))); } } diff --git a/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java b/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java index 1110ecb..7d94621 100644 --- a/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java +++ b/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java @@ -15,8 +15,7 @@ import tw.music.streamer.R; import tw.music.streamer.adaptor.ZZSong; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; +import tw.music.streamer.loader.ZryteZeneImageLoader; public class ZZRandomSongAdapter extends RecyclerView.Adapter { @@ -37,7 +36,7 @@ public ZZViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) public void onBindViewHolder(@NonNull ZZViewHolder h, int p) { h.title.setText(data.get(p).song_name); h.line.setBackgroundColor(Color.parseColor(data.get(p).color1)); - Glide.with(h.title.getContext()).load(data.get(p).url_cover).diskCacheStrategy(DiskCacheStrategy.ALL).into(h.cover); + ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); } @Override diff --git a/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java b/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java index ddd3f5e..9a70dc7 100644 --- a/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java +++ b/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java @@ -14,8 +14,7 @@ import tw.music.streamer.R; import tw.music.streamer.adaptor.ZZSong; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; +import tw.music.streamer.loader.ZryteZeneImageLoader; public class ZZSongAdapter extends RecyclerView.Adapter { @@ -38,7 +37,7 @@ public ZZViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) public void onBindViewHolder(@NonNull ZZViewHolder h, final int p) { h.title.setText(data.get(p).song_name); h.artist.setText(data.get(p).song_artist); - Glide.with(h.title.getContext()).load(data.get(p).url_cover).diskCacheStrategy(DiskCacheStrategy.ALL).into(h.cover); + ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); h.cover.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View a) { diff --git a/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java b/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java new file mode 100644 index 0000000..5a7fbfd --- /dev/null +++ b/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java @@ -0,0 +1,152 @@ +package tw.music.streamer.loader; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.os.Handler; +import android.os.Looper; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.collection.LruCache; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class ZryteZeneImageLoader { + + public static interface BitmapCallback { + void onBitmapLoaded(@Nullable Bitmap bitmap); + } + + private static ZryteZeneImageLoader instance; + private final LruCache memoryCache; + private final ExecutorService executorService; + private final File cacheDir; + private final Handler mainHandler = new Handler(Looper.getMainLooper()); + + private ZryteZeneImageLoader(Context context) { + final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); + final int cacheSize = maxMemory / 8; + memoryCache = new LruCache(cacheSize) { + @Override + protected int sizeOf(@NonNull String key, @NonNull Bitmap bitmap) { + return bitmap.getByteCount() / 1024; + } + }; + executorService = Executors.newFixedThreadPool(4); + cacheDir = new File(context.getFilesDir(), "images-cache"); + if (!cacheDir.exists()) cacheDir.mkdirs(); + } + + public static synchronized ZryteZeneImageLoader getInstance(Context context) { + if (instance == null) instance = new ZryteZeneImageLoader(context.getApplicationContext()); + return instance; + } + + public void load(String url, ImageView imageView) { + load(url, imageView, null); + } + + public void load(String url, @Nullable BitmapCallback callback) { + Bitmap cachedBitmap = memoryCache.get(url); + if (cachedBitmap != null) { + if (callback != null) callback.onBitmapLoaded(cachedBitmap); + return; + } + executorService.execute(() -> { + Bitmap bitmap = loadFromDiskCache(url); + if (bitmap == null) { + bitmap = loadFromNetwork(url); + if (bitmap != null) saveToDiskCache(url, bitmap); + } + final Bitmap resultBitmap = bitmap; + mainHandler.post(() -> { + if (callback != null) callback.onBitmapLoaded(resultBitmap); + }); + }); + } + + public void load(String url, ImageView imageView, @Nullable BitmapCallback callback) { + imageView.setTag(url); + Bitmap cachedBitmap = memoryCache.get(url); + if (cachedBitmap != null) { + imageView.setImageBitmap(cachedBitmap); + if (callback != null) callback.onBitmapLoaded(cachedBitmap); + return; + } + executorService.execute(() -> { + Bitmap bitmap = loadFromDiskCache(url); + if (bitmap == null) { + bitmap = loadFromNetwork(url); + if (bitmap != null) saveToDiskCache(url, bitmap); + } + final Bitmap resultBitmap = bitmap; + mainHandler.post(() -> { + if (imageView.getTag().equals(url) && resultBitmap != null) imageView.setImageBitmap(resultBitmap); + if (callback != null) callback.onBitmapLoaded(resultBitmap); + }); + }); + } + + private Bitmap loadFromNetwork(String urlString) { + try { + URL url = new URL(urlString); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setConnectTimeout(5000); + connection.setReadTimeout(5000); + connection.connect(); + if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { + InputStream inputStream = connection.getInputStream(); + Bitmap bitmap = BitmapFactory.decodeStream(inputStream); + inputStream.close(); + memoryCache.put(urlString, bitmap); + return bitmap; + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private Bitmap loadFromDiskCache(String url) { + try { + File file = new File(cacheDir, String.valueOf(url.hashCode())); + if (file.exists()) { + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); + if (bitmap != null) memoryCache.put(url, bitmap); + return bitmap; + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private void saveToDiskCache(String url, Bitmap bitmap) { + try { + File file = new File(cacheDir, String.valueOf(url.hashCode())); + FileOutputStream fos = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void clearCache() { + memoryCache.evictAll(); + File[] files = cacheDir.listFiles(); + if (files != null) { + for (File file : files) { + file.delete(); + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/tw/music/streamer/notification/ZryteZeneNotification.java b/app/src/main/java/tw/music/streamer/notification/ZryteZeneNotification.java index ddf46c0..0a08042 100644 --- a/app/src/main/java/tw/music/streamer/notification/ZryteZeneNotification.java +++ b/app/src/main/java/tw/music/streamer/notification/ZryteZeneNotification.java @@ -20,10 +20,7 @@ import android.support.v4.media.session.MediaSessionCompat; -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.CustomTarget; -import com.bumptech.glide.request.transition.Transition; -import com.bumptech.glide.load.engine.DiskCacheStrategy; +import tw.music.streamer.loader.ZryteZeneImageLoader; import tw.music.streamer.receiver.ZryteZeneBroadcastReceiver; import tw.music.streamer.service.ZryteZenePlay; @@ -48,19 +45,9 @@ public static void update(Context a, boolean b, MediaSessionCompat c, String d, if (f.equals("-")) { updateWithMedia(a,b,c,d,e,null,g); } else { - Glide.with(a) - .asBitmap() - .load(f) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .into(new CustomTarget() { - @Override - public void onResourceReady(@NonNull Bitmap h, @NonNull Transition i) { - updateWithMedia(a,b,c,d,e,h,g); - } - @Override - public void onLoadCleared(@Nullable Drawable j) { - } - }); + ZryteZeneImageLoader.getInstance(a).load(f, bitmap -> { + if (bitmap!=null) updateWithMedia(a,b,c,d,e,bitmap,g); + }); } } From f95ceb9a9af3caca8f09d9d77058bfded242fc88 Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Fri, 24 Jan 2025 20:51:29 +0700 Subject: [PATCH 02/98] added preload disk cache to make it perfect :) --- .../streamer/loader/ZryteZeneImageLoader.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java b/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java index 5a7fbfd..dc8d0c7 100644 --- a/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java +++ b/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java @@ -43,6 +43,7 @@ protected int sizeOf(@NonNull String key, @NonNull Bitmap bitmap) { executorService = Executors.newFixedThreadPool(4); cacheDir = new File(context.getFilesDir(), "images-cache"); if (!cacheDir.exists()) cacheDir.mkdirs(); + preloadDiskCache(); } public static synchronized ZryteZeneImageLoader getInstance(Context context) { @@ -149,4 +150,22 @@ public void clearCache() { } } } + + private void preloadDiskCache() { + File[] cachedFiles = cacheDir.listFiles(); + if (cachedFiles != null) { + for (File file : cachedFiles) { + executorService.execute(() -> { + try { + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); + if (bitmap != null) { + memoryCache.put(file.getName(), bitmap); + } + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + } + } } \ No newline at end of file From 17a132395ea72ac91ca161ed781a16441d99377f Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Fri, 24 Jan 2025 21:02:50 +0700 Subject: [PATCH 03/98] converted url to hashCode for better accuracy --- .../tw/music/streamer/loader/ZryteZeneImageLoader.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java b/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java index dc8d0c7..f4c8753 100644 --- a/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java +++ b/app/src/main/java/tw/music/streamer/loader/ZryteZeneImageLoader.java @@ -56,13 +56,13 @@ public void load(String url, ImageView imageView) { } public void load(String url, @Nullable BitmapCallback callback) { - Bitmap cachedBitmap = memoryCache.get(url); + Bitmap cachedBitmap = memoryCache.get(String.valueOf(url.hashCode())); if (cachedBitmap != null) { if (callback != null) callback.onBitmapLoaded(cachedBitmap); return; } executorService.execute(() -> { - Bitmap bitmap = loadFromDiskCache(url); + Bitmap bitmap = loadFromDiskCache(String.valueOf(url.hashCode())); if (bitmap == null) { bitmap = loadFromNetwork(url); if (bitmap != null) saveToDiskCache(url, bitmap); @@ -76,14 +76,14 @@ public void load(String url, @Nullable BitmapCallback callback) { public void load(String url, ImageView imageView, @Nullable BitmapCallback callback) { imageView.setTag(url); - Bitmap cachedBitmap = memoryCache.get(url); + Bitmap cachedBitmap = memoryCache.get(String.valueOf(url.hashCode())); if (cachedBitmap != null) { imageView.setImageBitmap(cachedBitmap); if (callback != null) callback.onBitmapLoaded(cachedBitmap); return; } executorService.execute(() -> { - Bitmap bitmap = loadFromDiskCache(url); + Bitmap bitmap = loadFromDiskCache(String.valueOf(url.hashCode())); if (bitmap == null) { bitmap = loadFromNetwork(url); if (bitmap != null) saveToDiskCache(url, bitmap); From 75e33516ca4069e5f82bea1435824bbfce9f6bff Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Fri, 24 Jan 2025 21:11:25 +0700 Subject: [PATCH 04/98] optimized zz image loader on recyclerview onbind --- .../java/tw/music/streamer/adapter/ZZRandomSongAdapter.java | 3 ++- app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java | 3 ++- app/src/main/java/tw/music/streamer/adaptor/ZZSong.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java b/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java index 7d94621..53e8d01 100644 --- a/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java +++ b/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java @@ -36,7 +36,8 @@ public ZZViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) public void onBindViewHolder(@NonNull ZZViewHolder h, int p) { h.title.setText(data.get(p).song_name); h.line.setBackgroundColor(Color.parseColor(data.get(p).color1)); - ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); + if (!data.get(p).cl) ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); + data.get(p).cl = true; } @Override diff --git a/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java b/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java index 9a70dc7..c87319b 100644 --- a/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java +++ b/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java @@ -37,7 +37,8 @@ public ZZViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) public void onBindViewHolder(@NonNull ZZViewHolder h, final int p) { h.title.setText(data.get(p).song_name); h.artist.setText(data.get(p).song_artist); - ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); + if (!data.get(p).cl) ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); + data.get(p).cl = true; h.cover.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View a) { diff --git a/app/src/main/java/tw/music/streamer/adaptor/ZZSong.java b/app/src/main/java/tw/music/streamer/adaptor/ZZSong.java index 2930e5e..a0c839c 100644 --- a/app/src/main/java/tw/music/streamer/adaptor/ZZSong.java +++ b/app/src/main/java/tw/music/streamer/adaptor/ZZSong.java @@ -7,10 +7,11 @@ public class ZZSong { public static final String PATH = "https://firebasestorage.googleapis.com/v0/b/teammusic-tw.appspot.com/o/zrytezene%2Fsongs%2F"; public String key, url_song, url_icon, url_cover, uploader_uid, uploader_name, song_name, song_artist, color1; - public boolean playing; + public boolean playing, cl; public ZZSong(DataSnapshot a) { playing = false; + cl = false; key = a.getKey(); url_song = PATH + a.child("song").getValue(String.class); url_icon = PATH + a.child("icon").getValue(String.class); From 6d400db7f34e9d12004e8e8c92b0343970b4040a Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Fri, 24 Jan 2025 21:29:49 +0700 Subject: [PATCH 05/98] disabled zz image loader for a while for testing, i want to measure the data usage --- .../java/tw/music/streamer/StreamingActivity.java | 12 ++++++------ .../music/streamer/adapter/ZZRandomSongAdapter.java | 2 +- .../tw/music/streamer/adapter/ZZSongAdapter.java | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/tw/music/streamer/StreamingActivity.java b/app/src/main/java/tw/music/streamer/StreamingActivity.java index e6c3bd2..38a8fcc 100644 --- a/app/src/main/java/tw/music/streamer/StreamingActivity.java +++ b/app/src/main/java/tw/music/streamer/StreamingActivity.java @@ -76,7 +76,7 @@ protected void onCreate(Bundle a) { } private void initVariables(Context a) { - ZryteZeneImageLoader.getInstance(a); + //ZryteZeneImageLoader.getInstance(a); zz_songs = new ArrayList<>(); zz_songs2 = new ArrayList<>(); zz_click1 = new ZZOnClickListener() { @@ -129,7 +129,7 @@ private void initFirebaseListener(final Context z) { if (a.isSuccessful()) { DataSnapshot b = a.getResult(); if (b.exists() && b.hasChild("url")) { - ZryteZeneImageLoader.getInstance(z).load(b.child("url").getValue(String.class),user_icon); + //ZryteZeneImageLoader.getInstance(z).load(b.child("url").getValue(String.class),user_icon); } } }); @@ -300,9 +300,9 @@ private void playFromZZSongs(int a) { mp_artist.setText(zz_songs.get(a).song_artist); mp_title.setText(zz_songs.get(a).song_name); mp_play.setImageResource(R.drawable.ic_pause_white); - ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_icon, mp_icon); + //ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_icon, mp_icon); mp_base.setVisibility(View.VISIBLE); - ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_cover, bg_drop); + //ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_cover, bg_drop); mp_bar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(zz_songs.get(a).color1))); zz.play(zz_songs.get(a)); } @@ -315,9 +315,9 @@ private void loadSongFromKey(String a) { bg_drop.setVisibility(View.VISIBLE); mp_artist.setText(c.child("artist").getValue(String.class)); mp_title.setText(c.child("title").getValue(String.class)); - ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("icon").getValue(String.class), mp_icon); + //ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("icon").getValue(String.class), mp_icon); mp_base.setVisibility(View.VISIBLE); - ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("cover").getValue(String.class), bg_drop); + //ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("cover").getValue(String.class), bg_drop); mp_bar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(c.child("color-bline").getValue(String.class)))); } } diff --git a/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java b/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java index 53e8d01..5460f5f 100644 --- a/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java +++ b/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java @@ -36,7 +36,7 @@ public ZZViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) public void onBindViewHolder(@NonNull ZZViewHolder h, int p) { h.title.setText(data.get(p).song_name); h.line.setBackgroundColor(Color.parseColor(data.get(p).color1)); - if (!data.get(p).cl) ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); + //if (!data.get(p).cl) ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); data.get(p).cl = true; } diff --git a/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java b/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java index c87319b..b992825 100644 --- a/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java +++ b/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java @@ -37,7 +37,7 @@ public ZZViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) public void onBindViewHolder(@NonNull ZZViewHolder h, final int p) { h.title.setText(data.get(p).song_name); h.artist.setText(data.get(p).song_artist); - if (!data.get(p).cl) ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); + //if (!data.get(p).cl) ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); data.get(p).cl = true; h.cover.setOnClickListener(new View.OnClickListener() { @Override From 0d3a176ad0d9c9fc0718cd9a5df6b681dfa41474 Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Fri, 24 Jan 2025 21:35:27 +0700 Subject: [PATCH 06/98] disabled initFirebaseListener for data usage measurement --- app/src/main/java/tw/music/streamer/StreamingActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/tw/music/streamer/StreamingActivity.java b/app/src/main/java/tw/music/streamer/StreamingActivity.java index 38a8fcc..1639678 100644 --- a/app/src/main/java/tw/music/streamer/StreamingActivity.java +++ b/app/src/main/java/tw/music/streamer/StreamingActivity.java @@ -71,7 +71,7 @@ protected void onCreate(Bundle a) { initLayout(); initOnClick(getApplicationContext()); initLogic(getApplicationContext()); - initFirebaseListener(getApplicationContext()); + //initFirebaseListener(getApplicationContext()); initBackgroundServices(getApplicationContext()); } From 4fb22e2d41af4632d160aa0fa3c2c47039614dae Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Fri, 24 Jan 2025 21:38:41 +0700 Subject: [PATCH 07/98] disabled initFirebase() for data usage measurement --- app/src/main/java/tw/music/streamer/StreamingActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/tw/music/streamer/StreamingActivity.java b/app/src/main/java/tw/music/streamer/StreamingActivity.java index 1639678..1099bc2 100644 --- a/app/src/main/java/tw/music/streamer/StreamingActivity.java +++ b/app/src/main/java/tw/music/streamer/StreamingActivity.java @@ -67,7 +67,7 @@ protected void onCreate(Bundle a) { super.onCreate(a); setContentView(R.layout.stream_base); initVariables(getApplicationContext()); - initFirebase(); + //initFirebase(); initLayout(); initOnClick(getApplicationContext()); initLogic(getApplicationContext()); From cd9e5193e8761e34ff235f91bc2d61dfdc29bcbb Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Fri, 24 Jan 2025 21:46:18 +0700 Subject: [PATCH 08/98] changed the main activity to StreamingActivity because something weird is happening and idk what is it --- app/src/main/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a739707..5a2709b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,7 +21,7 @@ android:largeHeap="true"> @@ -91,7 +91,7 @@ android:exported="true"/> Date: Sat, 25 Jan 2025 18:30:40 +0700 Subject: [PATCH 09/98] re-enabling the firebase because the test was done --- .../tw/music/streamer/StreamingActivity.java | 20 ++++++++----------- .../streamer/adapter/ZZRandomSongAdapter.java | 3 +-- .../music/streamer/adapter/ZZSongAdapter.java | 3 +-- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/tw/music/streamer/StreamingActivity.java b/app/src/main/java/tw/music/streamer/StreamingActivity.java index 1099bc2..2b44458 100644 --- a/app/src/main/java/tw/music/streamer/StreamingActivity.java +++ b/app/src/main/java/tw/music/streamer/StreamingActivity.java @@ -67,16 +67,16 @@ protected void onCreate(Bundle a) { super.onCreate(a); setContentView(R.layout.stream_base); initVariables(getApplicationContext()); - //initFirebase(); + initFirebase(); initLayout(); initOnClick(getApplicationContext()); initLogic(getApplicationContext()); - //initFirebaseListener(getApplicationContext()); + initFirebaseListener(getApplicationContext()); initBackgroundServices(getApplicationContext()); } private void initVariables(Context a) { - //ZryteZeneImageLoader.getInstance(a); + ZryteZeneImageLoader.getInstance(a); zz_songs = new ArrayList<>(); zz_songs2 = new ArrayList<>(); zz_click1 = new ZZOnClickListener() { @@ -105,11 +105,7 @@ private void initFirebaseListener(final Context z) { zz_songs.add(new ZZSong(c)); } ar_songs.notifyDataSetChanged(); - } else { - // songs empty } - } else { - // error: task.getException().getMessage() } }); @@ -129,7 +125,7 @@ private void initFirebaseListener(final Context z) { if (a.isSuccessful()) { DataSnapshot b = a.getResult(); if (b.exists() && b.hasChild("url")) { - //ZryteZeneImageLoader.getInstance(z).load(b.child("url").getValue(String.class),user_icon); + ZryteZeneImageLoader.getInstance(z).load(b.child("url").getValue(String.class),user_icon); } } }); @@ -300,9 +296,9 @@ private void playFromZZSongs(int a) { mp_artist.setText(zz_songs.get(a).song_artist); mp_title.setText(zz_songs.get(a).song_name); mp_play.setImageResource(R.drawable.ic_pause_white); - //ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_icon, mp_icon); + ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_icon, mp_icon); mp_base.setVisibility(View.VISIBLE); - //ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_cover, bg_drop); + ZryteZeneImageLoader.getInstance(getApplicationContext()).load(zz_songs.get(a).url_cover, bg_drop); mp_bar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(zz_songs.get(a).color1))); zz.play(zz_songs.get(a)); } @@ -315,9 +311,9 @@ private void loadSongFromKey(String a) { bg_drop.setVisibility(View.VISIBLE); mp_artist.setText(c.child("artist").getValue(String.class)); mp_title.setText(c.child("title").getValue(String.class)); - //ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("icon").getValue(String.class), mp_icon); + ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("icon").getValue(String.class), mp_icon); mp_base.setVisibility(View.VISIBLE); - //ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("cover").getValue(String.class), bg_drop); + ZryteZeneImageLoader.getInstance(getApplicationContext()).load(c.child("cover").getValue(String.class), bg_drop); mp_bar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(c.child("color-bline").getValue(String.class)))); } } diff --git a/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java b/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java index 5460f5f..7d94621 100644 --- a/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java +++ b/app/src/main/java/tw/music/streamer/adapter/ZZRandomSongAdapter.java @@ -36,8 +36,7 @@ public ZZViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) public void onBindViewHolder(@NonNull ZZViewHolder h, int p) { h.title.setText(data.get(p).song_name); h.line.setBackgroundColor(Color.parseColor(data.get(p).color1)); - //if (!data.get(p).cl) ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); - data.get(p).cl = true; + ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); } @Override diff --git a/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java b/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java index b992825..9a70dc7 100644 --- a/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java +++ b/app/src/main/java/tw/music/streamer/adapter/ZZSongAdapter.java @@ -37,8 +37,7 @@ public ZZViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) public void onBindViewHolder(@NonNull ZZViewHolder h, final int p) { h.title.setText(data.get(p).song_name); h.artist.setText(data.get(p).song_artist); - //if (!data.get(p).cl) ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); - data.get(p).cl = true; + ZryteZeneImageLoader.getInstance(h.title.getContext()).load(data.get(p).url_cover, h.cover); h.cover.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View a) { From 2455777029c53646ac1d41cd146a2195cd7a6fe3 Mon Sep 17 00:00:00 2001 From: AdityaKapal362 Date: Sat, 25 Jan 2025 18:46:20 +0700 Subject: [PATCH 10/98] changed splash layout --- app/src/main/res/layout/main.xml | 224 +++---------------------------- 1 file changed, 17 insertions(+), 207 deletions(-) diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 480b0f4..f55f403 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -1,237 +1,47 @@ - + android:background="#000000"> - - - - - - - - - - - - - - - - - - - - -