/* * Copyright (C) 2012 The Android Open Source Project * * 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 com.mzeat.image; import android.annotation.SuppressLint; import android.app.ActivityManager; import android.content.Context; import android.graphics.Bitmap; import android.os.Build; import android.os.Environment; import android.os.StatFs; import android.widget.ImageView; import java.io.File; import java.util.ArrayList; import java.util.List; import com.mzeat.image.ImageWorker.ImageWorkerAdapter; /** * Class containing some static utility methods. * 包含一些实用的静态方法的类 */ public class Utils { public static final int IO_BUFFER_SIZE = 8 * 1024; private static List<String> items = null; private Utils() { }; /** * Workaround for bug pre-Froyo, see here for more info: * http://android-developers.blogspot.com/2011/09/androids-http-clients.html */ public static void disableConnectionReuseIfNecessary() { // HTTP connection reuse which was buggy pre-froyo if (hasHttpConnectionBug()) { System.setProperty("http.keepAlive", "false"); } } /** * Get the size in bytes of a bitmap. * * @param bitmap * @return size in bytes */ @SuppressLint("NewApi") public static int getBitmapSize(Bitmap bitmap) { // Pre HC-MR1 return bitmap.getRowBytes() * bitmap.getHeight(); } /** * Check if external storage is built-in or removable. * 检查外置存储是否安装或移除 * @return True if external storage is removable (like an SD card), false * otherwise. */ @SuppressLint("NewApi") public static boolean isExternalStorageRemovable() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { return Environment.isExternalStorageRemovable(); } return true; } /** * Get the external app cache directory. * 取得外置应用缓存目录 * @param context * The context to use * @return The external cache dir */ @SuppressLint("NewApi") public static File getExternalCacheDir(Context context) { if (hasExternalCacheDir()) { return context.getExternalCacheDir(); } // Before Froyo we need to construct the external cache dir ourselves // 在2.2之前,我们需要自己建立一个外置的缓存目录 final String cacheDir = "/Android/data/" + context.getPackageName() + "/cache/"; return new File(Environment.getExternalStorageDirectory().getPath() + cacheDir); } /** * Check how much usable space is available at a given path. * 检查在给定路径还有多少空闲的可用空间。 * @param path * The path to check * @return The space available in bytes */ @SuppressLint("NewApi") public static long getUsableSpace(File path) { //版本大于2.3时候,可以直接返回。 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { return path.getUsableSpace(); } //版本小于2.3的时候,需要通过计算得出。 final StatFs stats = new StatFs(path.getPath()); return (long) stats.getBlockSize() * (long) stats.getAvailableBlocks(); } /** * Get the memory class of this device (approx. per-app memory limit) * * @param context * @return */ public static int getMemoryClass(Context context) { return ((ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass(); } /** * Check if OS version has a http URLConnection bug. See here for more * information: * http://android-developers.blogspot.com/2011/09/androids-http-clients.html * * @return */ public static boolean hasHttpConnectionBug() { return Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO; } /** * Check if OS version has built-in external cache dir method. * 检查OS版本是否内置有外部缓存目录方法 版本大于2.2 * @return */ public static boolean hasExternalCacheDir() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO; } /** * Check if ActionBar is available. * 检查动作栏是否可用。 版本大于等于2.3 * @return */ public static boolean hasActionBar() { return Build.VERSION.SDK_INT >= 11;// Build.VERSION_CODES.HONEYCOMB; } public static ImageWorkerAdapter imageThumbWorkerUrlsAdapter = new ImageWorkerAdapter() { public Object getItem(int num) { return items.get(num); } public int getSize() { return items.size(); } }; }