IconManager.java :  » Blog-Twitter » twift » com » twift » control » Android Open Source

Android Open Source » Blog Twitter » twift 
twift » com » twift » control » IconManager.java
package com.twift.control;

import java.io.IOException;
import java.net.URL;
import java.util.HashMap;

import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;

/**
 * <br>
 * Twitter APIHashmap<br>
 * Hashmap<br>
 * Singleton
 * @author Keisuke Kobayashi (k.kobayashi.122 at gmail.com)
 *
 */
public class IconManager {
  
  /** IconManagerSingleton */
  private static IconManager iconManager = new IconManager();

  /**  */
  private static final int DEFAUL_WIDTH = 100;
  /**  */
  private static final int DEFAULT_HEIGHT = 100;
  
  /**  */
  private HashMap<String, Bitmap> hashmap;
  
  /**
   * 
   * Singletonprivate
   */
  private IconManager(){
    hashmap = new HashMap<String, Bitmap>();
  }
  
  public static IconManager getInstance(){
    return iconManager;
  }
  
  /**
   * 
   * @param user 
   * @return 
   */
  public Bitmap getUserIcon(User user){
    return getUserIcon(user.getScreenName(), user.getProfileImageURL().toString());
  }
  
  /**
   * url
   * @param screenName 
   * @param url URL
   * @return URLnull
   */
  public Bitmap getUserIcon(String screenName, String url){
    //
    if( hashmap.containsKey(screenName) ){
      return hashmap.get(screenName);
    }
    //Twitter
    else{
      try{
        URL url2 = new URL(url);
        Bitmap bmp = BitmapFactory.decodeStream(url2.openStream());
        if(bmp == null){
          return null;
        }
        Bitmap resized = Bitmap.createScaledBitmap(bmp, DEFAUL_WIDTH, DEFAULT_HEIGHT, true);
        bmp.recycle();
        hashmap.put(screenName, resized);
        Log.v("iconmgr", "add: " + screenName);
        return resized;
      }catch(IOException e){
        e.printStackTrace();

        hashmap.put(screenName, null);
        return null;
      }
    }
  }
  
  /**
   * TwitterAPI
   * AccountActivityAPI
   * @param screenName 
   * @return 
   */
  public Bitmap getUserIcon(String screenName){
    // 
    if( hashmap.containsKey(screenName) ){
      return hashmap.get(screenName);
    }
    // TwitterAPI
    else{
      // Twitter
      Twitter twitter = new TwitterFactory().getInstance();
      try{
        User user = twitter.showUser(screenName);
        String url = user.getProfileImageURL().toString();
        return getUserIcon(screenName, url);
      }catch(TwitterException e){
        e.printStackTrace();
        return null;
      }
    }
  }
  
  /**
   * TwitterAPI
   * AccountActivityAPI
   * @param screenName 
   * @param width
   * @param height
   * @return 
   */
  public Bitmap getResizedUserIcon(String screenName, int width, int height){
    Bitmap bmp = getUserIcon(screenName);
    if(bmp != null){
      Bitmap resized = Bitmap.createScaledBitmap(bmp, width, height, true);
      return resized;
    }else{
      Log.e("IconManager", "getResizedUserIcon returns null!");
      return null;
    }
  }
  
  /**
   * 
   * @param user 
   * @param width 
   * @param height 
   * @return 
   */
  public Bitmap getResizedUserIcon(User user, int width, int height){
    return getResizedUserIcon(user.getScreenName(), user.getProfileImageURL().toString(), width, height);
  }
  
  /**
   * 
   * @param screenName 
   * @param url URL
   * @param width 
   * @param height 
   * @return 
   */
  public Bitmap getResizedUserIcon(String screenName, String url, int width, int height){
    Bitmap defaultBmp = getUserIcon(screenName, url);
    if(width == DEFAUL_WIDTH && height == DEFAULT_HEIGHT){
      return defaultBmp;
    }else{
      Bitmap resizedBmp = Bitmap.createScaledBitmap(defaultBmp, width, height, true);
      //defaultBmprecycleHashmap
      return resizedBmp;
    }
  }

  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.