Android Open Source - unicef_gis_mobile Bitmap Worker Task






From Project

Back to project page unicef_gis_mobile.

License

The source code is released under:

MIT License

If you think the Android project unicef_gis_mobile 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

package org.unicef.gis.infrastructure.image;
/*  www.  j  a v a2s .  c  o m*/
import java.lang.ref.WeakReference;
import java.util.HashMap;

import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.widget.ImageView;

public class BitmapWorkerTask extends AsyncTask<Uri, Void, Bitmap> {
  private static HashMap<String, Bitmap> cachedThumbnails = new HashMap<String, Bitmap>();
  
  private final WeakReference<ImageView> imageViewReference;
  private final Camera camera;
  private Uri file;
  private final int scale;
  
  private Bitmap thumbnailPlaceholder = null;
  
  public BitmapWorkerTask(Camera camera, int scale, ImageView imageView) { 
    this.imageViewReference = new WeakReference<ImageView>(imageView);
    this.camera = camera;
    this.scale = scale;
  }

  @Override
  protected Bitmap doInBackground(Uri... params) {
    file = params[0];
    String plainUri = file.toString();
    
    updateThumbnailCache(plainUri);          
        
    return thumbnailOrPlaceholder(plainUri);
  }
  
  private Bitmap thumbnailOrPlaceholder(String plainUri) {
    Bitmap thumbnail = cachedThumbnails.get(plainUri);
    
    if (thumbnail == null) {
      if (thumbnailPlaceholder == null)
        thumbnailPlaceholder = camera.getPlaceholder();
      
      thumbnail = thumbnailPlaceholder;
    }
      
    return thumbnail;
  }

  private synchronized void updateThumbnailCache(String plainUri) {
    if (!cachedThumbnails.containsKey(plainUri)) {
      Bitmap thumbnail = camera.getThumbnail(file, scale);
      
      if (thumbnail != null)
        cachedThumbnails.put(plainUri, thumbnail);      
    }      
  }
  
  @Override
  protected void onPostExecute(Bitmap result) {
    if (isCancelled()) {
      result = null;
    }
    
    if (imageViewReference != null && result != null){
      final ImageView imageView = imageViewReference.get();
      final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView);      
      
      if (this == bitmapWorkerTask && imageView != null) {
        imageView.setImageBitmap(result);
      }
    }
  }
  
  public Uri getImageUri() {
    return file;
  }
  
  public static BitmapWorkerTask getBitmapWorkerTask(ImageView imageView) {
     if (imageView != null) {
         final Drawable drawable = imageView.getDrawable();
         if (drawable instanceof AsyncDrawable) {
             final AsyncDrawable asyncDrawable = (AsyncDrawable) drawable;
             return asyncDrawable.getBitmapWorkerTask();
         }
      }
      return null;
  }
}




Java Source Code List

com.couchbase.cblite.ektorp.CBLiteHttpClient.java
com.couchbase.cblite.ektorp.CBLiteHttpResponse.java
edu.mit.mobile.android.utils.StreamUtils.java
org.unicef.gis.auth.AuthenticatorService.java
org.unicef.gis.auth.Authenticator.java
org.unicef.gis.infrastructure.CompileTimeSettings.java
org.unicef.gis.infrastructure.ILocationServiceConsumer.java
org.unicef.gis.infrastructure.LocationService.java
org.unicef.gis.infrastructure.Network.java
org.unicef.gis.infrastructure.Notificator.java
org.unicef.gis.infrastructure.RoutesResolver.java
org.unicef.gis.infrastructure.ServerUrlPreferenceNotSetException.java
org.unicef.gis.infrastructure.UnicefGisApi.java
org.unicef.gis.infrastructure.data.CouchDbLiteStoreAdapter.java
org.unicef.gis.infrastructure.data.UnicefGisContentProvider.java
org.unicef.gis.infrastructure.data.UnicefGisStore.java
org.unicef.gis.infrastructure.image.AsyncDrawable.java
org.unicef.gis.infrastructure.image.BitmapWorkerTask.java
org.unicef.gis.infrastructure.image.Camera.java
org.unicef.gis.model.Report.java
org.unicef.gis.model.Tag.java
org.unicef.gis.model.couchdb.NullReduce.java
org.unicef.gis.model.couchdb.ReportLoader.java
org.unicef.gis.model.couchdb.views.AllReportsByTimestampDesc.java
org.unicef.gis.model.couchdb.views.PendingSyncReports.java
org.unicef.gis.model.couchdb.views.UnicefGisView.java
org.unicef.gis.model.couchdb.views.UploadedReports.java
org.unicef.gis.sync.SyncAdapter.java
org.unicef.gis.sync.SyncService.java
org.unicef.gis.ui.AlertDialogFragment.java
org.unicef.gis.ui.AuthenticatorActivity.java
org.unicef.gis.ui.ConfigureServerUrlActivity.java
org.unicef.gis.ui.DeleteUploadedReportsTask.java
org.unicef.gis.ui.FetchTagsActivity.java
org.unicef.gis.ui.FetchTagsTask.java
org.unicef.gis.ui.MyReportsActivity.java
org.unicef.gis.ui.SettingsActivity.java
org.unicef.gis.ui.SettingsFragment.java
org.unicef.gis.ui.report.ChooseTagsFragment.java
org.unicef.gis.ui.report.CreateReportActivityConstants.java
org.unicef.gis.ui.report.CreateReportActivity.java
org.unicef.gis.ui.report.GetTagsTaskFragment.java
org.unicef.gis.ui.report.GetTagsTask.java
org.unicef.gis.ui.report.IChooseTagsCallbacks.java
org.unicef.gis.ui.report.IGetTagsCallback.java
org.unicef.gis.ui.report.IGetTagsTaskFragmentCallbacks.java
org.unicef.gis.ui.report.IReportSummaryCallbacks.java
org.unicef.gis.ui.report.ReportRowAdapter.java
org.unicef.gis.ui.report.ReportSummaryFragment.java
org.unicef.gis.ui.report.ReportViewModel.java
org.unicef.gis.ui.report.ToggleTagAdapter.java