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;
}
}
}
|