From d7634b690a46586bef3dbcfa3443329573b4e072 Mon Sep 17 00:00:00 2001 From: Florens Douwes Date: Mon, 7 Apr 2014 20:51:54 +0200 Subject: [PATCH] Enabled webm Fixed it so that webm works. The videoplayer crashed my old xperia, so a setting to disable videos would be nice. --- .../com/android/volley/NetworkDispatcher.java | 4 +-- .../chan/core/net/ByteArrayRequest.java | 4 +++ .../floens/chan/core/net/CachingRequest.java | 29 +++++++++++++++++++ .../chan/ui/fragment/ImageViewFragment.java | 24 +++++++-------- 4 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 Chan/src/org/floens/chan/core/net/CachingRequest.java diff --git a/Chan/src/com/android/volley/NetworkDispatcher.java b/Chan/src/com/android/volley/NetworkDispatcher.java index a654ead5..0388de97 100644 --- a/Chan/src/com/android/volley/NetworkDispatcher.java +++ b/Chan/src/com/android/volley/NetworkDispatcher.java @@ -16,13 +16,13 @@ package com.android.volley; +import java.util.concurrent.BlockingQueue; + import android.annotation.TargetApi; import android.net.TrafficStats; import android.os.Build; import android.os.Process; -import java.util.concurrent.BlockingQueue; - /** * Provides a thread for performing network dispatch from a queue of requests. * diff --git a/Chan/src/org/floens/chan/core/net/ByteArrayRequest.java b/Chan/src/org/floens/chan/core/net/ByteArrayRequest.java index 59809d02..17930657 100644 --- a/Chan/src/org/floens/chan/core/net/ByteArrayRequest.java +++ b/Chan/src/org/floens/chan/core/net/ByteArrayRequest.java @@ -6,6 +6,10 @@ import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; +/** + * Request a plain byte[] + * Warning: no caching! + */ public class ByteArrayRequest extends Request { protected final Listener listener; diff --git a/Chan/src/org/floens/chan/core/net/CachingRequest.java b/Chan/src/org/floens/chan/core/net/CachingRequest.java new file mode 100644 index 00000000..a2700ce2 --- /dev/null +++ b/Chan/src/org/floens/chan/core/net/CachingRequest.java @@ -0,0 +1,29 @@ +package org.floens.chan.core.net; + +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.Response.ErrorListener; +import com.android.volley.Response.Listener; +import com.android.volley.toolbox.HttpHeaderParser; + +public class CachingRequest extends Request { + protected final Listener listener; + + public CachingRequest(String url, Listener listener, ErrorListener errorListener) { + super(Method.GET, url, errorListener); + this.listener = listener; + + setShouldCache(true); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + return Response.success(null, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(Void response) { + listener.onResponse(response); + } +} diff --git a/Chan/src/org/floens/chan/ui/fragment/ImageViewFragment.java b/Chan/src/org/floens/chan/ui/fragment/ImageViewFragment.java index 7f7d4299..97d5ae1e 100644 --- a/Chan/src/org/floens/chan/ui/fragment/ImageViewFragment.java +++ b/Chan/src/org/floens/chan/ui/fragment/ImageViewFragment.java @@ -6,7 +6,7 @@ import java.io.IOException; import org.floens.chan.ChanApplication; import org.floens.chan.R; import org.floens.chan.core.model.Post; -import org.floens.chan.core.net.ByteArrayRequest; +import org.floens.chan.core.net.CachingRequest; import org.floens.chan.core.net.GIFRequest; import org.floens.chan.ui.activity.ImageViewActivity; import org.floens.chan.ui.view.GIFView; @@ -42,7 +42,7 @@ public class ImageViewFragment extends Fragment implements View.OnLongClickListe private ImageViewActivity activity; private int index; - private ByteArrayRequest movieRequest; + private CachingRequest movieRequest; public static ImageViewFragment newInstance(Post post, ImageViewActivity activity, int index) { ImageViewFragment imageViewFragment = new ImageViewFragment(); @@ -105,9 +105,9 @@ public class ImageViewFragment extends Fragment implements View.OnLongClickListe } private void loadMovie() { - movieRequest = new ByteArrayRequest(post.imageUrl, new Response.Listener() { + movieRequest = new CachingRequest(post.imageUrl, new Response.Listener() { @Override - public void onResponse(byte[] array) { + public void onResponse(Void empty) { if (movieRequest != null) { try { handleMovieResponse(movieRequest); @@ -134,27 +134,27 @@ public class ImageViewFragment extends Fragment implements View.OnLongClickListe showProgressBar(true); } - private void handleMovieResponse(ByteArrayRequest request) throws IOException { + private void handleMovieResponse(CachingRequest request) throws IOException { DiskBasedCache cache = (DiskBasedCache) ChanApplication.getVolleyRequestQueue().getCache(); File file = cache.getFileForKey(movieRequest.getCacheKey()); - Logger.test(file.getAbsolutePath()); - - Logger.test(movieRequest.getCacheKey()); - -// Logger.test(movieRequest.getCacheEntry().toString()); - if (file.exists()) { + Logger.test("Showing video from " + file.getAbsolutePath()); + final VideoView view = new VideoView(context); + view.setZOrderOnTop(true); + view.setOnLongClickListener(this); view.setOnClickListener(this); + wrapper.addView(view, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); + view.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setLooping(true); view.start(); - wrapper.addView(view, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); + } });