Android常用方法

/* * 保存一张图片到指定的路径
*
* @author jksfood
*
* @param bitmap
* bitmap 是JPG
*
* @param filePath
* 图片要保存的位置
*
* @return
*/
public static boolean saveBitmapToSd(Bitmap bitmap, String filePath) {
FileOutputStream outputStream = null;
try {
File file = new File(filePath);
if (file.exists() || file.isDirectory()) {
file.delete();
}
file.createNewFile();
outputStream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 0, outputStream);
} catch (IOException e) {
// if(Log.debug){
//
// e.printStackTrace();
//
// }
return false;

    } finally {
        if (outputStream != null) {
            try {
                    outputStream.flush();
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return true;
}
    /**
     * 从SD卡读Bitmap
     * 
     * @author jksfood
     * @param filePath
     * @param reqWidth
     * @param reqHeight
     * @return
     */

    public static Bitmap getBitmapFromSdCard(String filePath, int reqWidth,
            int reqHeight) {
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(filePath, options);
        options.inSampleSize = calculateInSampleSize(options, reqWidth,
                reqHeight);

        options.inJustDecodeBounds = false;
        return BitmapFactory.decodeFile(filePath, options);
    }

    /**
     * 计算样本大小
     * 
     * @author jksfood
     * @param options
     * @param reqWidth
     * @param reqHeight
     * @return
     */
    private static int calculateInSampleSize(BitmapFactory.Options options,
            int reqWidth, int reqHeight) {
        final int height = options.outHeight;
        final int width = options.outWidth;
        int inSampleSize = 1;
        if (height > reqHeight || width > reqWidth) {
            final int heightRatio = Math.round((float) height
                    / (float) reqHeight);
            final int widthRatio = Math.round((float) width / (float) reqWidth);
            inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
        }
        return inSampleSize;
    }
/**
 * 从内存卡读取图片(防止OOM)
 * 
 * @author jksfood
 * @param fileName
 * @param height
 * @return
 */

public static Bitmap getBitmpFromSDCard(String fileName, int height) {
    Bitmap b = null;
    BitmapFactory.Options o2 = null;
    try {
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;

        FileInputStream fis;

        fis = new FileInputStream(fileName);

        BitmapFactory.decodeStream(fis, null, o);
        fis.close();

        int scale = o.outHeight / height;

        o2 = new BitmapFactory.Options();
        o2.inSampleSize = scale;
        fis = new FileInputStream(fileName);
        b = BitmapFactory.decodeStream(fis, null, o2);
        fis.close();
    } catch (IOException e) {
    } catch (OutOfMemoryError e) {
        System.gc();
    }
    return b;
}

    /**
     * Drable转为Bitmap
     * @author jksfood
     * @param d
     * @return
     */

    public static Bitmap getDrawable2Bitmap(Drawable d) {
        BitmapDrawable bd = (BitmapDrawable) d;
        Bitmap bm = bd.getBitmap();
        return bm;
    }

    /**
     * 缩放图片
     * 
     * @author jksfood
     * @Time 2014年8月27日 上午11:32:21
     * @param paramBitmap
     *            原图
     * @param newWidth
     *            新的宽度
     * @param newHeight
     *            新的高度
     * @return
     */
    public static Bitmap getScaleBitmap2Bitmap(Bitmap paramBitmap,
            int newWidth, int newHeight) {
        int i = paramBitmap.getWidth();
        int j = paramBitmap.getHeight();
        float f1 = ((float) newWidth) / i;
        float f2 = ((float) newHeight) / j;
        if (f1 <= 0.0F) {
            f1 = 1.0F;
        }
        if (f2 <= 0.0F) {
            f2 = 1.0F;
        }
        Matrix localMatrix = new Matrix();
        localMatrix.postScale(f1, f2);
        return Bitmap.createBitmap(paramBitmap, 0, 0, i, j, localMatrix, true);
    }
/**
 * 基于位移的Integer转化成byte[]
 * 
 * @author jksfood
 * @param number
 * @return
 */
public static byte[] intToByte(int number) {
    byte[] abyte = new byte[4];
    // "&" 与(AND),对两个整型操作数中对应位执行布尔代数,两个位都为1时输出1,否则0。
    abyte[0] = (byte) (0xff & number);
    // ">>"右移位,若为正数则高位补0,若为负数则高位补1
    abyte[1] = (byte) ((0xff00 & number) >> 8);
    abyte[2] = (byte) ((0xff0000 & number) >> 16);
    abyte[3] = (byte) ((0xff000000 & number) >> 24);
    return abyte;
}

    /**
     * 基于位移的 byte[]转化成Integer
     * 
     * @author jksfood
     * @param bytes
     * @return
     */
    public static int bytesToInt(byte[] bytes) {
        int number = bytes[0] & 0xFF;
        // "|="按位或赋值。
        number |= ((bytes[1] << 8) & 0xFF00);
        number |= ((bytes[2] << 16) & 0xFF0000);
        number |= ((bytes[3] << 24) & 0xFF000000);
        return number;
    }
/**
 * 合并两个byte[]为一个byte[]
 * 
 * @author YOLANDA
 * @param bytes1
 * @param bytes2
 * @return
 */
public static byte[] combineTowBytes(byte[] bytes1, byte[] bytes2) {
    byte[] bytes3 = new byte[bytes1.length + bytes2.length];
    System.arraycopy(bytes1, 0, bytes3, 0, bytes1.length);
    System.arraycopy(bytes2, 0, bytes3, bytes1.length, bytes2.length);
    return bytes3;
}

    /**
     * 产生一个0-end的随机数
     * 
     * @author jksfood
     * @param n
     * @return
     */
    public static int getRandomInt(int end) {
        Random random = new Random();
        return random.nextInt(end);
    }
      ```
    /**
     * 生成一个给定范围的随机数
     * 
     * @author jksfood
     * @param min
     * @param max
     * @return
     */
    public static int getRandomInt(int min, int max) {
        Random random = new Random();
        return random.nextInt(max) % (max - min + 1) + min;
    }
/**
 * 是否是数字
 * 
 * @author jksfood
 * @param value
 * @return
 */
public static boolean isInteger(String value) {
    Pattern pattern = Pattern.compile("[0-9]*");
    return pattern.matcher(value).matches();
}
    /**
     * 重命名文件
     * 
     * @author jksfood
     * @param resFilePath
     * @param newFilePath
     * @return
     */
    public static boolean renameFile(String resFilePath, String newFilePath) {
        File resFile = new File(resFilePath);
        File newFile = new File(newFilePath);
        return resFile.renameTo(newFile);
    }
/**
 * android控制闪光灯
 */  

public class LightControl {

private boolean isOpen;

private Camera mCamera;

public LightControl() {
    if (mCamera == null) {
        mCamera = Camera.open();
    }
}

/**
 * 传入已经打开的相机实例
 * 
 * @author jksfood
 * @param camera
 */
public LightControl(Camera camera) {
    this.mCamera = camera;
}

/**
 * 是否是打开的
 * 
 * @author jksfood
 * @return
 */
public boolean isOpen() {
    return isOpen;
}

/**
 * 打开
 * 
 * @author jksfood
 */
public void open() {
    try {
        Camera.Parameters mParameters = mCamera.getParameters();
        mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
        mCamera.setParameters(mParameters);
        isOpen = true;
    } catch (Exception ex) {
        isOpen = false;
    }

}

/**
 * 关闭
 * 
 * @author jksfood
 */
public void close() {
    try {
        Camera.Parameters mParameters = mCamera.getParameters();
        mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
        mCamera.setParameters(mParameters);
        isOpen = true;
    } catch (Exception ex) {
        isOpen = false;
    }

}
}

    /** 关闭输入法
     * 
     * @author YOLANDA
     * @param context
     */
    public static void closeInputMethod(Activity context) {
        InputMethodManager inputMethodManager = (InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        View focusView = context.getCurrentFocus();
        if (inputMethodManager != null && focusView != null) {
            inputMethodManager.hideSoftInputFromWindow(
                    focusView.getWindowToken(),
                    InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容