package hillfly.wifichat.common; import hillfly.wifichat.R; import hillfly.wifichat.model.FileState; import hillfly.wifichat.util.FileUtils; import hillfly.wifichat.util.Logger; import java.io.File; import java.lang.ref.Reference; import java.lang.ref.SoftReference; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Application; import android.app.Service; import android.graphics.Bitmap; import android.media.AudioManager; import android.media.SoundPool; import android.os.Vibrator; import android.util.Log; public class BaseApplication extends Application { public static boolean isDebugmode = false; private boolean isPrintLog = true; private int logLevel = Log.DEBUG; /** 静音、震动默认开关 **/ private static boolean isSlient = false; private static boolean isVIBRATE = true; /** 新消息提醒 **/ private static int notiSoundPoolID; private static SoundPool notiMediaplayer; private static Vibrator notiVibrator; /** 缓存 **/ private Map<String, SoftReference<Bitmap>> mAvatarCache; public static HashMap<String, FileState> sendFileStates; public static HashMap<String, FileState> recieveFileStates; /** 本地图像、缩略图、声音、文件存储路径 **/ public static String IMAG_PATH; public static String THUMBNAIL_PATH; public static String VOICE_PATH; public static String FILE_PATH; public static String SAVE_PATH; public static String CAMERA_IMAGE_PATH; /** mEmoticons 表情 **/ public static Map<String, Integer> mEmoticonsId; public static List<String> mEmoticons; public static List<String> mEmoticons_Zem; private static BaseApplication instance; private static Logger logger; /** * <p> * 获取BaseApplication实例 * <p> * 单例模式,返回唯一实例 * * @return instance */ public static BaseApplication getInstance() { return instance; } @Override public void onCreate() { super.onCreate(); if (instance == null) { instance = this; } sendFileStates = new HashMap<String, FileState>(); recieveFileStates = new HashMap<String, FileState>(); mAvatarCache = new HashMap<String, SoftReference<Bitmap>>(); ActivitiesManager.init(); // 初始化活动管理器 logger = Logger.initLogger(instance, isPrintLog, logLevel); // 初始化日志 initEmoticons(); initNotification(); initFolder(); } private void initEmoticons() { mEmoticonsId = new HashMap<String, Integer>(); mEmoticons = new ArrayList<String>(); mEmoticons_Zem = new ArrayList<String>(); // 预载表情 for (int i = 1; i < 64; i++) { String emoticonsName = "[zem" + i + "]"; int emoticonsId = getResources().getIdentifier("zem" + i, "drawable", getPackageName()); mEmoticons.add(emoticonsName); mEmoticons_Zem.add(emoticonsName); mEmoticonsId.put(emoticonsName, emoticonsId); } } private void initNotification() { notiMediaplayer = new SoundPool(3, AudioManager.STREAM_SYSTEM, 5); notiSoundPoolID = notiMediaplayer.load(this, R.raw.crystalring, 1); notiVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE); } @Override public void onLowMemory() { super.onLowMemory(); logger.e("onLowMemory"); } @Override public void onTerminate() { super.onTerminate(); logger.e("onTerminate"); } // 函数创建文件存储目录 private void initFolder() { if (null == IMAG_PATH) { SAVE_PATH = FileUtils.getSDPath();// 获取SD卡的根目录路径,如果不存在就返回Null if (null == SAVE_PATH) { SAVE_PATH = instance.getFilesDir().toString();// 获取内置存储区目录 } SAVE_PATH += File.separator + instance.getString(R.string.app_name); IMAG_PATH = SAVE_PATH + File.separator + "image"; THUMBNAIL_PATH = SAVE_PATH + File.separator + "thumbnail"; VOICE_PATH = SAVE_PATH + File.separator + "voice"; FILE_PATH = SAVE_PATH + File.separator + "file"; CAMERA_IMAGE_PATH = IMAG_PATH + File.separator; if (!FileUtils.isFileExists(IMAG_PATH)) FileUtils.createDirFile(BaseApplication.IMAG_PATH); if (!FileUtils.isFileExists(THUMBNAIL_PATH)) FileUtils.createDirFile(BaseApplication.THUMBNAIL_PATH); if (!FileUtils.isFileExists(VOICE_PATH)) FileUtils.createDirFile(BaseApplication.VOICE_PATH); if (!FileUtils.isFileExists(FILE_PATH)) FileUtils.createDirFile(BaseApplication.FILE_PATH); } } public void addAvatarCache(String paramAvatarName, Bitmap bitmap) { mAvatarCache.put(paramAvatarName, new SoftReference<Bitmap>(bitmap)); } public Reference<Bitmap> getAvatarCache(String paramAvatarName) { return mAvatarCache.get(paramAvatarName); } public void removeAvatarCache(String paramAvatarName) { mAvatarCache.remove(paramAvatarName); } public Map<String, SoftReference<Bitmap>> getAvatarCache() { return mAvatarCache; } /* 设置声音提醒 */ public static boolean getSoundFlag() { return !isSlient; } public static void setSoundFlag(boolean pIsSlient) { isSlient = pIsSlient; } /* 设置震动提醒 */ public static boolean getVibrateFlag() { return isVIBRATE; } public static void setVibrateFlag(boolean pIsvibrate) { isVIBRATE = pIsvibrate; } /** * 新消息提醒 - 声音提醒、振动提醒 */ public static void playNotification() { if (!isSlient) { notiMediaplayer.play(notiSoundPoolID, 1, 1, 0, 0, 1); } if (isVIBRATE) { notiVibrator.vibrate(200); } } }