package ru.truba.touchgallery.TouchView; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; public class InputStreamWrapper extends BufferedInputStream { protected long mContentLen, mBytesLoaded; protected InputStreamProgressListener mProgressListener; public InputStreamWrapper(InputStream in, int size, long contentLen) { super(in, size); mContentLen = contentLen; mBytesLoaded = 0; } @Override public synchronized int read(byte[] buffer, int offset, int byteCount) throws IOException { mBytesLoaded += byteCount; if (mProgressListener != null) { mProgressListener.onProgress(mBytesLoaded * 1.0f / mContentLen, mBytesLoaded, mContentLen); } return super.read(buffer, offset, byteCount); } public void setProgressListener(InputStreamProgressListener listener) { mProgressListener = listener; } public static interface InputStreamProgressListener { public void onProgress(float progressValue, long bytesLoaded, long bytesTotal); } }