Android Open Source - muckebox-android Download Catchup Runnable






From Project

Back to project page muckebox-android.

License

The source code is released under:

Apache License

If you think the Android project muckebox-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*   
 * Copyright 2013 Karsten Patzwaldt//from   w  w  w.  j  ava  2  s  .  co  m
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.muckebox.android.net;

import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;

import org.muckebox.android.Muckebox;
import org.muckebox.android.utils.BufferUtils;

import android.os.Handler;
import android.util.Log;

public class DownloadCatchupRunnable implements Runnable {
    private final static String LOG_TAG = "DownloadCatchupRunnable";
    private final static long BUFFER_SIZE = 32 * 1024;
    
    public static final int MESSAGE_DATA_RECEIVED   = 10;
    public static final int MESSAGE_DATA_COMPLETE   = 11;
    public static final int MESSAGE_ERROR           = 12;
    
    private String mFilename;
    private int mTrackId;
    private Handler mHandler;
    private long mBytesToRead;
    
    public DownloadCatchupRunnable(String filename, long bytesToRead, int trackId, Handler handler) {
        mFilename = filename;
        mTrackId = trackId;
        mHandler = handler;
        mBytesToRead = bytesToRead;
    }

    @Override
    public void run() {
        try {
            FileInputStream input = Muckebox.getAppContext().openFileInput(mFilename);
            boolean eofSeen = false;
            
            while (mBytesToRead > 0 && ! eofSeen) {
                ByteBuffer buf = ByteBuffer.allocate((int) Math.min(mBytesToRead, BUFFER_SIZE));
                
                eofSeen = BufferUtils.readIntoBuffer(input, buf) || Thread.interrupted();
                
                if (mHandler != null)
                    mHandler.sendMessage(mHandler.obtainMessage(
                        MESSAGE_DATA_RECEIVED, mTrackId, 0, buf));
                
                mBytesToRead -= buf.position();
            }
            
            if (mBytesToRead > 0)
                Log.e(LOG_TAG, "Could not read all bytes (" + mBytesToRead + " left)");
            
            if (mHandler != null)
                mHandler.sendMessage(mHandler.obtainMessage(
                    MESSAGE_DATA_COMPLETE, mTrackId, 0));
        } catch (IOException e) {
            Log.e(LOG_TAG, "failed to catch up!");
            
            e.printStackTrace();
            
            if (mHandler != null)
                mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_ERROR, mTrackId));
        }
    }

}




Java Source Code List

org.muckebox.android.Muckebox.java
org.muckebox.android.audio.PlayerListener.java
org.muckebox.android.audio.PlayerService.java
org.muckebox.android.audio.PlayerWrapper.java
org.muckebox.android.db.DownloadEntryCursor.java
org.muckebox.android.db.MuckeboxContract.java
org.muckebox.android.db.MuckeboxDbHelper.java
org.muckebox.android.db.MuckeboxProvider.java
org.muckebox.android.db.PlaylistHelper.java
org.muckebox.android.net.ApiHelper.java
org.muckebox.android.net.DownloadCatchupRunnable.java
org.muckebox.android.net.DownloadListener.java
org.muckebox.android.net.DownloadRunnable.java
org.muckebox.android.net.DownloadServer.java
org.muckebox.android.net.DownloadService.java
org.muckebox.android.net.MuckeboxHttpClient.java
org.muckebox.android.net.PreannounceTask.java
org.muckebox.android.net.RefreshAlbumsTask.java
org.muckebox.android.net.RefreshArtistsAlbumsTask.java
org.muckebox.android.net.RefreshArtistsTask.java
org.muckebox.android.net.RefreshHelper.java
org.muckebox.android.net.RefreshTask.java
org.muckebox.android.net.RefreshTracksTask.java
org.muckebox.android.ui.activity.MuckeboxActivity.java
org.muckebox.android.ui.activity.WizardActivity.java
org.muckebox.android.ui.fragment.AlbumListFragment.java
org.muckebox.android.ui.fragment.ArtistListFragment.java
org.muckebox.android.ui.fragment.DownloadListFragment.java
org.muckebox.android.ui.fragment.DrawerFragment.java
org.muckebox.android.ui.fragment.PlayerFragment.java
org.muckebox.android.ui.fragment.SettingsFragment.java
org.muckebox.android.ui.fragment.TrackListFragment.java
org.muckebox.android.ui.utils.ExpandableCursorAdapter.java
org.muckebox.android.ui.utils.HeightEvaluator.java
org.muckebox.android.ui.utils.ImageButtonHelper.java
org.muckebox.android.ui.utils.NavigationListener.java
org.muckebox.android.ui.utils.ScrollYAnimator.java
org.muckebox.android.ui.utils.TimeFormatter.java
org.muckebox.android.ui.widgets.ImageViewRotater.java
org.muckebox.android.ui.widgets.LiveSearchView.java
org.muckebox.android.ui.widgets.RefreshableListFragment.java
org.muckebox.android.ui.widgets.SearchableListFragment.java
org.muckebox.android.utils.BufferUtils.java
org.muckebox.android.utils.CacheCleaner.java
org.muckebox.android.utils.Preferences.java
org.muckebox.android.utils.RemoteControlReceiver.java