常用总结

来源:互联网 发布:淘宝卖家寄灵位 编辑:程序博客网 时间:2024/06/07 22:41
public class Toolkit {    /**     *      * Role:Telecom service providers获取手机服务商信息 <BR>     *      * 需要加入权限<uses-permission     * android:name="android.permission.READ_PHONE_STATE"/> <BR>     * Date:2012-3-12 <BR>     *      * @author CODYY)allen     */    public static String getProvidersName(Context context) {        String ProvidersName = "nosim";        try {            // 返回唯一的用户ID;就是这张卡的编号神马的            TelephonyManager telephonyManager = (TelephonyManager) context                    .getSystemService(Context.TELEPHONY_SERVICE);            String IMSI = telephonyManager.getSubscriberId();            // IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。            if (IMSI.startsWith("46000") || IMSI.startsWith("46002"))                ProvidersName = "中国移动";            else if (IMSI.startsWith("46001"))                ProvidersName = "中国联通";            else if (IMSI.startsWith("46003"))                ProvidersName = "中国电信";        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();            return ProvidersName;        }        return ProvidersName;    }    /**     * 获取手机号     *      * @param context     * @return     */    public static String getPhone(Context context) {        TelephonyManager phoneMgr = (TelephonyManager) context                .getSystemService(Context.TELEPHONY_SERVICE);        return phoneMgr.getLine1Number();    }    /**     * 获取手机型号     *      * @return     */    public static String getPhoneType() {        return Build.MODEL;    }    /**     * 获取sdk版本     *      * @return     */    public static String getSDKVersion() {        return Build.VERSION.SDK;    }    /**     * 获取版本号     *      * @return     */    public static String getVersion() {        return Build.VERSION.RELEASE;    }    public static class TelephonyManagerInfo {        /**         * 电话状态: 1.tm.CALL_STATE_IDLE=0 无活动         *          * 2.tm.CALL_STATE_RINGING=1 响铃         *          * 3.tm.CALL_STATE_OFFHOOK=2 摘机         */        public static int CallState;        /**         *          * 电话方位:(需要权限:android.permission.ACCESS_COARSE_LOCATION)         */        public static String CellLocation;        /**         *          * 唯一的设备ID:         *          * GSM手机的 IMEI 和 CDMA手机的 MEID.         *          * Return null if device ID is not available.         */        public static String DeviceId;        /**         *          * 设备的软件版本号:         *          * 例如:the IMEI/SV(software version) for GSM phones.         *          * Return null if the software version is not available.         */        public static String DeviceSoftwareVersion;        /**         *          * 手机号:         *          * GSM手机的 MSISDN.         *          * Return null if it is unavailable.         */        public static String Line1Number;        /**         *          * 附近的电话的信息:         *          * 类型:List<NeighboringCellInfo>         *          * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES         */        public static List<NeighboringCellInfo> NeighboringCellInfo;// List<NeighboringCellInfo>        /**         *          * 获取ISO标准的国家码,即国际长途区号。         *          * 注意:仅当用户已在网络注册后有效。         *          * 在CDMA网络中结果也许不可靠。         */        public static String NetworkCountryIso;        /**         *          * MCC+MNC(mobile country code + mobile network code)         *          * 注意:仅当用户已在网络注册时有效。         *          * 在CDMA网络中结果也许不可靠。         */        public static String NetworkOperator;        /**         *          * 按照字母次序的current registered operator(当前已注册的用户)的名字         *          * 注意:仅当用户已在网络注册时有效。         *          * 在CDMA网络中结果也许不可靠。         */        public static String NetworkOperatorName;// String        /**         * 当前使用的网络类型:         *          * 例如: NETWORK_TYPE_UNKNOWN 网络类型未知 0 NETWORK_TYPE_GPRS GPRS网络 1         *          * NETWORK_TYPE_EDGE EDGE网络 2         *          * NETWORK_TYPE_UMTS UMTS网络 3         *          * NETWORK_TYPE_HSDPA HSDPA网络 8         *          * NETWORK_TYPE_HSUPA HSUPA网络 9         *          * NETWORK_TYPE_HSPA HSPA网络 10         *          * NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B. 4         *          * NETWORK_TYPE_EVDO_0 EVDO网络, revision 0. 5         *          * NETWORK_TYPE_EVDO_A EVDO网络, revision A. 6         *          * NETWORK_TYPE_1xRTT 1xRTT网络 7         */        public static int NetworkType;// int        /**         *          * 手机类型:         *          * 例如: PHONE_TYPE_NONE 无信号         *          * PHONE_TYPE_GSM GSM信号         *          * PHONE_TYPE_CDMA CDMA信号         */        public static int PhoneType;// int        /**         *          * Returns the ISO country code equivalent for the SIM provider's         * country code.         *          * 获取ISO国家码,相当于提供SIM卡的国家码。         */        public static String SimCountryIso;// String        /**         *          * Returns the MCC+MNC (mobile country code + mobile network code) of         * the provider of the SIM. 5 or 6 decimal digits.         *          * 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.         *          * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).         */        public static String SimOperator;// String        /**         *          * 服务商名称:         *          * 例如:中国移动、联通         *          * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).         */        public static String SimOperatorName;// String        /**         *          * SIM卡的序列号:         *          * 需要权限:READ_PHONE_STATE         */        public static String SimSerialNumber;// String        /**         *          * SIM的状态信息:         *          * SIM_STATE_UNKNOWN 未知状态 0         *          * SIM_STATE_ABSENT 没插卡 1         *          * SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2         *          * SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3         *          * SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4         *          * SIM_STATE_READY 就绪状态 5         */        public static int SimState;// int        /**         *          * 唯一的用户ID:         *          * 例如:IMSI(国际移动用户识别码) for a GSM phone.         *          * 需要权限:READ_PHONE_STATE         */        public static String SubscriberId;// String        /**         *          * 取得和语音邮件相关的标签,即为识别符         *          * 需要权限:READ_PHONE_STATE         */        public static String VoiceMailAlphaTag;// String        /**         *          * 获取语音邮件号码:         *          * 需要权限:READ_PHONE_STATE         */        public static String VoiceMailNumber;// String        /**         *          * ICC卡是否存在         */        public static boolean hasIccCard;// boolean        /**         *          * 是否漫游:         *          * (在GSM用途下)         */        public static boolean isNetworkRoaming;    }    /**     * 获取手机唯一ID     *      * @param context     * @return     */    public static String getPhoneUniqueId(Context context) {        TelephonyManager tm = (TelephonyManager) context                .getSystemService(context.TELEPHONY_SERVICE);        return tm.getDeviceId();    }    /**     * 获取手机信息实体     *      * @param context     * @return     */    public static TelephonyManagerInfo getTelephonyInfo(Context context) {        TelephonyManagerInfo info = new TelephonyManagerInfo();        TelephonyManager tm = (TelephonyManager) context                .getSystemService(context.TELEPHONY_SERVICE);        info.CallState = tm.getCallState();        info.CellLocation = tm.getCellLocation().toString();        info.DeviceId = tm.getDeviceId();        info.DeviceSoftwareVersion = tm.getDeviceSoftwareVersion();        info.hasIccCard = tm.hasIccCard();        info.isNetworkRoaming = tm.isNetworkRoaming();        info.Line1Number = tm.getLine1Number();        info.NeighboringCellInfo = tm.getNeighboringCellInfo();        info.NetworkCountryIso = tm.getNetworkCountryIso();        info.NetworkOperator = tm.getNetworkOperator();        info.NetworkOperatorName = tm.getNetworkOperatorName();        info.NetworkType = tm.getNetworkType();        info.PhoneType = tm.getPhoneType();        info.SimCountryIso = tm.getSimCountryIso();        info.SimOperator = tm.getSimOperator();        info.SimOperatorName = tm.getSimOperatorName();        info.SimSerialNumber = tm.getSimSerialNumber();        info.SimState = tm.getSimState();        info.SubscriberId = tm.getSubscriberId();        info.VoiceMailAlphaTag = tm.getVoiceMailAlphaTag();        info.VoiceMailNumber = tm.getVoiceMailNumber();        return info;    }    /**     * 取得屏幕分辨率大小     *      * @param context     *            Activity上下文     * @return第一个值为宽度     */    public static int[] getDisplayPixes(Activity context) {        DisplayMetrics dm = new DisplayMetrics();        context.getWindowManager().getDefaultDisplay().getMetrics(dm);        return new int[] { dm.widthPixels, dm.heightPixels };    }    /**     * 取得屏幕分辨宽度和高度     *      * @param context     *            Activity上下文     * @return第一个值为宽度     */    public static int[] getDisplayWidthHeight(Activity context) {        Display dis = context.getWindowManager().getDefaultDisplay();        return new int[] { dis.getWidth(), dis.getHeight() };    }    /**     * 检查是否有可用的网络     *      * @param context     *            上下文     * @return true:有网络     */    public static boolean isAvaliable(Context context) {        if (isWiFiActive(context) || isNetworkAvailable(context))            // Toast.makeText(context, "有网络!", 300).show();            return true;        else            // Toast.makeText(context, "网络不正常!", 300).show();            return false;    }    /** 返回当前网速 */    public static long getNetworkSpeed() {        // TODO Auto-generated method stub        ProcessBuilder cmd;        long readBytes = 0;        BufferedReader rd = null;        try {            String[] args = { "/system/bin/cat", "/proc/net/dev" };            cmd = new ProcessBuilder(args);            Process process = cmd.start();            rd = new BufferedReader(new InputStreamReader(                    process.getInputStream()));            String line;            int linecount = 0;            while ((line = rd.readLine()) != null) {                linecount++;                if (line.contains("wlan0") || line.contains("eth0")) {                    // L.E("获取流量整条字符串",line);                    String[] delim = line.split(":");                    if (delim.length >= 2) {                        String[] numbers = delim[1].trim().split(" ");// 提取数据                        readBytes = Long.parseLong(numbers[0].trim());//                        break;                    }                }            }            rd.close();        } catch (Exception ex) {            ex.printStackTrace();        } finally {            if (rd != null) {                try {                    rd.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }        return readBytes;    }    /**     * 检查wifi是否可用     *      * @param inContext     * @return     */    public static boolean isWiFiActive(Context inContext) {        WifiManager mWifiManager = (WifiManager) inContext                .getSystemService(Context.WIFI_SERVICE);        WifiInfo wifiInfo = mWifiManager.getConnectionInfo();        int ipAddress = wifiInfo == null ? 0 : wifiInfo.getIpAddress();        if (mWifiManager.isWifiEnabled() && ipAddress != 0) {            System.out.println("**** WIFI is on");            return true;        } else {            System.out.println("**** WIFI is off");            return false;        }    }    /**     * 检查手机网络(非wifi)是否有用     *      * @param context     * @return     */    public static boolean isNetworkAvailable(Context context) {        ConnectivityManager connectivity = (ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE);        if (connectivity == null) {            return false;        } else {            NetworkInfo info = connectivity.getActiveNetworkInfo();            if (info == null) {                return false;            } else {                if (info.isAvailable()) {                    return true;                }            }        }        return false;    }    /**     * 判断是否为wifi的连接ip     *      * @return     */    public static boolean isWifiConnected(Context context) {        int ipAddress = getWifiIpInfo(context);        if (ipAddress > 0)            return true;        else            return false;    }    private static int getWifiIpInfo(Context context) {        // 获取wifi服务        WifiManager wifiManager = (WifiManager) context                .getSystemService(Context.WIFI_SERVICE);        // 判断wifi是否开启        if (!wifiManager.isWifiEnabled()) {            wifiManager.setWifiEnabled(true);        }        WifiInfo wifiInfo = wifiManager.getConnectionInfo();        // return String.valueOf(wifiInfo.getIpAddress());        int ipAddress = wifiInfo.getIpAddress();        return ipAddress;    }    /**     * 获取wifi ip     *      * @return     */    public static String getWifiAddress(Context context) {        int ipAddress = getWifiIpInfo(context);        return intToIp(ipAddress);    }    private static String intToIp(int i) {        return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF)                + "." + (i >> 24 & 0xFF);    }    /**     * 获取手机mac地址<br/>     * 错误返回12个0     */    public static String getMacAddress(Context context) {        // 获取mac地址:        String macAddress = "000000000000";        try {            WifiManager wifiMgr = (WifiManager) context                    .getSystemService(Context.WIFI_SERVICE);            WifiInfo info = (null == wifiMgr ? null : wifiMgr                    .getConnectionInfo());            if (null != info) {                if (!TextUtils.isEmpty(info.getMacAddress()))                    macAddress = info.getMacAddress().replace(":", "");                else                    return macAddress;            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();            return macAddress;        }        return macAddress;    }    /**     * 获取手机ip(此方法在android中使用获取3G网络ip地址)     *      * @return     * @throws SocketException     * @throws UnknownHostException     */    public static String getLocalIpAddress() throws SocketException {        for (Enumeration<NetworkInterface> en = NetworkInterface                .getNetworkInterfaces(); en.hasMoreElements();) {            NetworkInterface intf = en.nextElement();            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr                    .hasMoreElements();) {                InetAddress inetAddress = enumIpAddr.nextElement();                if (!inetAddress.isLoopbackAddress()) {                    return inetAddress.getHostAddress().toString();                }            }        }        return null;    }    /**     * 获取本机ip(此方法仅在java程序中)     *      * @return     * @throws UnknownHostException     */    public static String getHostAddress() throws UnknownHostException {        InetAddress address = null;        address = InetAddress.getLocalHost();        return address.getHostAddress();    }    /**     * 读取文本,一次读取多个字节,默认为1024     *      * @param file     *            文件名称(在sd卡下面的data/data/应用程序包下面)     * @param context     *            上下文     * @param encode     *            编码方式     * @return     * @throws IOException     */    public static String readFromFileByChar(String file, Context context,            String encode) throws IOException {        FileInputStream fis = context.openFileInput(file);        BufferedReader br = new BufferedReader(new InputStreamReader(fis,                encode));        // Log.i(TAG, br.readLine());        int index = 0;        char[] buffer = new char[1024];// 一次性读取1024个字符        StringBuffer sb = new StringBuffer();        while ((index = br.read(buffer)) != -1) {// 一次读多个字符            // 同样屏蔽掉r不显示            if ((index == buffer.length) && (buffer[buffer.length - 1] != 'r')) {                sb.append(buffer);            } else {                for (int i = 0; i < index; i++) {                    if (buffer[i] == 'r') {                        continue;// 停止执行当前的迭代,然后退回循环开始处                    } else {                        sb.append(buffer[i]);                    }                }            }        }        br.close();        fis.close();        return sb.toString();        // return br.readLine();    }    /**     * 按行读取文本     *      * @param file     *            文件名     * @param context     *            上下文     * @param encode     *            编码方式     * @return     * @throws IOException     */    public static String readFromFileByLine(String file, Context context,            String encode) throws IOException {        FileInputStream fis = context.openFileInput(file);        BufferedReader br = new BufferedReader(new InputStreamReader(fis,                encode));        // Log.i(TAG, br.readLine());        StringBuffer sb = new StringBuffer();        String temp;        while ((temp = br.readLine()) != null) {// 一次读一行            sb.append(temp);        }        br.close();        fis.close();        return sb.toString();        // return br.readLine();    }    /**     * 一次将string内容写入到文件     *      * @param context     *            上下文     * @param file     *            文件名     * @param content     *            写入的内容     * @throws IOException     */    public static void writeToFile(Context context, String file, String content)            throws IOException {        FileOutputStream fos = context.openFileOutput(file,                context.MODE_PRIVATE);        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));        bw.write(content);        bw.flush();        bw.close();        fos.close();    }    /**     * 将object序列化到filename文件中     *      * @param fileName     *            文件名,包括路径     * @param object     *            序列化的对象     */    public static boolean writeFileByObject(String fileName, Object object) {        try {            FileOutputStream fos = new FileOutputStream(fileName);            ObjectOutputStream oos = new ObjectOutputStream(fos);            oos.writeObject(object);            oos.flush();            oos.close();            fos.close();            return true;        } catch (Exception e) {            e.printStackTrace();            return false;        }    }    /**     * 反序列化     *      * @param fileName     *            文件名,包括详细路径     * @return Object类型的对象     */    public static Object readFileByObject(String fileName) {        try {            FileInputStream fis = new FileInputStream(fileName);            ObjectInputStream ois = new ObjectInputStream(fis);            Object o = ois.readObject();            ois.close();            fis.close();            return o;        } catch (Exception e) {            return null;        }    }    /**     * 按照指定的宽度和高度压缩图片(这是android 2.2以上才有的方法)     *      * @param bm     * @param w     * @param h     * @return     */    public static Bitmap compressBitmap(Bitmap bm, int w, int h) {        return ThumbnailUtils.extractThumbnail(bm, w, h);    }    /**     * 等比例压缩图片     *      * @param is     *            图片输入流     * @param scalePix     *            压缩的尺寸     * @return     */    public static Bitmap compressBitmapByscale(InputStream is, int scalePix) {        BitmapFactory.Options opt = new Options();        opt.inSampleSize = scalePix;        return BitmapFactory.decodeStream(is, null, opt);    }    /**     * 等比例压缩图片     *      * @param data     *            byte[]数组     *      * @param ratio     *            压缩的尺寸     * @return     */    public static Bitmap compressBitmap(byte[] data, int ratio) {        BitmapFactory.Options opts = new Options();        opts.inJustDecodeBounds = false;        opts.inSampleSize = ratio;        // 得到新的图片        return BitmapFactory.decodeByteArray(data, 0, data.length, opts);    }    /**     * 自动压缩图片(根据能够压缩的比例)     *      * @param map     * @return     */    public static Bitmap compressBitmapAuto(Bitmap map, int scalePix) {        BitmapFactory.Options opts = new BitmapFactory.Options();        ByteArrayOutputStream os = new ByteArrayOutputStream();        byte[] data = os.toByteArray();        opts.inJustDecodeBounds = true;        map.compress(CompressFormat.PNG, 100, os);        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);        opts.inJustDecodeBounds = false;        int be = (int) (opts.outHeight / (float) scalePix);        if (be <= 0)            be = 1;        opts.inSampleSize = be;        bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opts);        return bitmap;    }    /** 根据屏幕大小适屏压缩 --2012/11/13-- */    public static Bitmap compressBitmapFixDisplay(Activity context, byte[] data) {        BitmapFactory.Options opts = new Options();        opts.inJustDecodeBounds = true;// 设置查看图片的大小,不分配内存        BitmapFactory.decodeByteArray(data, 0, data.length, opts);        int height = context.getWindowManager().getDefaultDisplay().getHeight();// 获取屏幕大小        int width = context.getWindowManager().getDefaultDisplay().getWidth();        int hratio = (int) Math.ceil(opts.outHeight / (float) height);// 图片的高度比上屏幕的高度        int wratio = (int) Math.ceil(opts.outWidth / (float) width);        if (hratio > 1 || wratio > 1) {// 如果图片超出屏幕范围            if (hratio > wratio)// 如果高度大于宽度                opts.inSampleSize = hratio;            else                opts.inSampleSize = wratio;        }        opts.inJustDecodeBounds = false;// 设置分配图片的大小        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,                opts);        return bitmap;    }    /**     * 压缩图片     *      * @param bm     *            所要转换的bitmap     * @param newWidth新的宽     * @param newHeight新的高     * @return 指定宽高的bitmap     */    public static Bitmap zoomImg(Bitmap bm, int newWidth, int newHeight) {        // 获得图片的宽高        int width = bm.getWidth();        int height = bm.getHeight();        // 计算缩放比例        float scaleWidth = ((float) newWidth) / width;        float scaleHeight = ((float) newHeight) / height;        // 取得想要缩放的matrix参数        Matrix matrix = new Matrix();        matrix.postScale(scaleWidth, scaleHeight);        // 得到新的图片        Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,                true);        if (!bm.isRecycled())// 回收bitmap            bm.recycle();        return newbm;    }    /**     * 动态设置ImageView的布局宽度和高度     *      * @param iv     *            ImageView对象     * @param width     *            要设置的宽度(0:充满父容器)     * @param height     *            要设置的高度(0:充满父容器)     */    public static void setImagePixes(ImageView iv, int width, int height) {        ViewGroup.LayoutParams params = iv.getLayoutParams();        if (width == 0 && height != 0)// 如果宽度为0        {            params.height = height;            params.width = ViewGroup.LayoutParams.FILL_PARENT;        } else if (height == 0 && width != 0) {// 高度为 0            params.height = ViewGroup.LayoutParams.FILL_PARENT;            params.width = width;        } else if (width == 0 && height == 0) {            params.height = ViewGroup.LayoutParams.FILL_PARENT;            params.width = ViewGroup.LayoutParams.FILL_PARENT;        } else {            params.height = height;            params.width = width;        }        iv.setLayoutParams(params);    }    /** activity转换为view */    @SuppressWarnings("deprecation")    public static View activityToView(Context parent, Intent intent) {        LocalActivityManager mLocalActivityManager = new LocalActivityManager(                (Activity) parent, true);        final Window w = mLocalActivityManager.startActivity("TagName", intent);        final View wd = w != null ? w.getDecorView() : null;        if (wd != null) {            wd.setVisibility(View.VISIBLE);            wd.setFocusableInTouchMode(true);            ((ViewGroup) wd)                    .setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);        }        return wd;    }    /***     * 动态设置listview的高度     *      * @param listView     */    public static void setListViewHeightBasedOnChildren(ListView listView) {        ListAdapter listAdapter = listView.getAdapter();        if (listAdapter == null) {            return;        }        int totalHeight = 0;        for (int i = 0; i < listAdapter.getCount(); i++) {            View listItem = listAdapter.getView(i, null, listView);            listItem.measure(0, 0);            totalHeight += listItem.getMeasuredHeight();        }        ViewGroup.LayoutParams params = listView.getLayoutParams();        params.height = totalHeight                + (listView.getDividerHeight() * (listAdapter.getCount() - 1));        // params.height += 5;// if without this statement,the listview will be        // a        // little short        // listView.getDividerHeight()获取子项间分隔符占用的高度        // params.height最后得到整个ListView完整显示需要的高度        listView.setLayoutParams(params);    }    /**     * 将Drawable转化为Bitmap     *      * @param drawable     * @return     */    public static Bitmap drawableToBitmap(Drawable drawable) {        int width = drawable.getIntrinsicWidth();        int height = drawable.getIntrinsicHeight();        Bitmap bitmap = Bitmap.createBitmap(width, height, drawable                .getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888                : Bitmap.Config.RGB_565);        Canvas canvas = new Canvas(bitmap);        drawable.setBounds(0, 0, width, height);        drawable.draw(canvas);        return bitmap;    }    /**     * 将图片的四角圆化     *      * @param bitmap     * @param radius     *            圆角弧度,数值越大弧度越大     * @return     */    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int radius) {        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),                bitmap.getHeight(), Config.ARGB_8888);        // 得到画布        Canvas canvas = new Canvas(output);        // 将画布的四角圆化        final int color = Color.RED;        final Paint paint = new Paint();        // 得到与图像相同大小的区域 由构造的四个值决定区域的位置以及大小        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());        final RectF rectF = new RectF(rect);        // 值越大角度越明显        final float roundPx = radius;        paint.setAntiAlias(true);        canvas.drawARGB(0, 0, 0, 0);        paint.setColor(color);        // drawRoundRect的第2,3个参数一样则画的是正圆的一角,如果数值不同则是椭圆的一角        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); // 设置形式为背景        canvas.drawBitmap(bitmap, rect, rect, paint);        return output;    }    /**     * 获得带倒影的图片方法     *      * @param bitmap     * @return     */    public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {        final int reflectionGap = 4;        int width = bitmap.getWidth();        int height = bitmap.getHeight();        Matrix matrix = new Matrix();        matrix.preScale(1, -1);        Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2,                width, height / 2, matrix, false);        Bitmap bitmapWithReflection = Bitmap.createBitmap(width,                (height + height / 2), Config.ARGB_8888);        Canvas canvas = new Canvas(bitmapWithReflection);        canvas.drawBitmap(bitmap, 0, 0, null);        Paint deafalutPaint = new Paint();        canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);        canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);        Paint paint = new Paint();        LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,                bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,                0x00ffffff, TileMode.CLAMP);        paint.setShader(shader);// 设置阴影        // Set the Transfer mode to be porter duff and destination in        paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));        // Draw a rectangle using the paint with our linear gradient        canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()                + reflectionGap, paint);        return bitmapWithReflection;    }    /**     * 向preferences写入数据     *      * @param context     *            上下文     * @param key     *            键     * @param value     *            写入的内容     */    public static void writeToPreferences(Context context, String filename,            String key, String value) {        // 得到preferences对象        SharedPreferences.Editor editor = context.getSharedPreferences(                filename, android.content.Context.MODE_PRIVATE).edit();        // editor = preferences.edit();        editor.putString(key, value);        editor.commit();    }    /**     * 向preference中读取数据 data/data/package/shared_prefs     *      * @param context     *            上下文     * @param filename     *            文件名     * @param key     *            键     * @param defaultValue     *            默认值     * @return     */    public static String readFromPreferences(Context context, String filename,            String key, String defaultValue) {        // 得到preferences对象        SharedPreferences preferences = context.getSharedPreferences(filename,                android.content.Context.MODE_PRIVATE                        | android.content.Context.MODE_APPEND);        return preferences.getString(key, defaultValue);    }    /**     * 加载properties文件     *      * @param context     * @param file     * @return     * @throws Exception     */    public static Properties loadProperties(Context context, String file,            String encode) throws Exception {        Properties properties = new Properties();        FileInputStream s = new FileInputStream(file);        properties.load(s);        return properties;    }    /**     * 保存到properties文件中     *      * @param context     * @param file     * @param properties     * @throws Exception     */    public static void saveProperties(Context context, String file,            String encode, Properties properties) throws Exception {        FileOutputStream s = new FileOutputStream(file, false);        properties.store(s, "");    }    // ---------------------------------------------------------------------------------------------------    /**     * 从网络上下载     *      * @param url     * @return     * @throws IOException     */    public static Bitmap getBitMapFromUrl(String url) throws IOException {        Bitmap bitmap = null;        URL u = null;        HttpURLConnection conn = null;        InputStream is = null;        u = new URL(url);        conn = (HttpURLConnection) u.openConnection();        is = conn.getInputStream();        bitmap = BitmapFactory.decodeStream(is);        return bitmap;    }    /**     * 异步加载网络图片     *      * @param src图片路径     * @param iv     *            imageview     * @param callback回调接口     */    public static void loadImage(final String src, final ImageView iv,            final ImageCallBack callback) {        final Handler handler = new Handler() {            public void handleMessage(Message msg) {                super.handleMessage(msg);                callback.setImageBitmap((Bitmap) msg.obj, iv, src);            }        };        new Thread(new Runnable() {            @Override            public void run() {                Bitmap bitmap = null;                try {                    bitmap = getBitMapFromUrl(src);                } catch (IOException e) {                    e.printStackTrace();                }                if (bitmap != null) {                    Message msg = handler.obtainMessage(0, bitmap);                    handler.sendMessage(msg);                }            }        }).start();    }    /**     * 获取网络byte流的图片     *      * @param src     * @return     * @throws Exception     */    public static byte[] getImageBytes(String src) throws Exception {        URL url = new URL(src);        HttpURLConnection conn = (HttpURLConnection) url.openConnection();        conn.setDoInput(true);        conn.setRequestMethod("GET");        conn.setConnectTimeout(5000);// 设置延迟时间为5s        InputStream is = conn.getInputStream();        ByteArrayOutputStream bos = new ByteArrayOutputStream();        int len = 0;        byte[] buffer = new byte[1024];        while ((len = is.read(buffer)) != -1) {            bos.write(buffer, 0, len);        }        return bos.toByteArray();    }    /**     * 压缩图片     *      * @param bm     *            所要转换的bitmap     * @param newWidth新的宽     * @param newHeight新的高     * @return 指定宽高的bitmap     */    public static Bitmap zoomBitmap(byte[] data, int newWidth, int newHeight) {        BitmapFactory.Options opts = new Options();        opts.inJustDecodeBounds = false;        opts.inSampleSize = 10;        // 得到新的图片        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,                opts);        // 获得图片的宽高        int width = bitmap.getWidth();        int height = bitmap.getHeight();        // 计算缩放比例        float scaleWidth = ((float) newWidth) / width;        float scaleHeight = ((float) newHeight) / height;        // 取得想要缩放的matrix参数        Matrix matrix = new Matrix();        matrix.postScale(scaleWidth, scaleHeight);        Bitmap newbm = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix,                true);        if (!bitmap.isRecycled())// 回收bitmap            bitmap.recycle();        return newbm;    }    /**     * 异步加载网络图片     *      * @param src     *            url地址     * @param iv     *            传入的iamgeView     * @param callback     *            回调函数     */    public static void AsycloadImage(final String src, final ImageView iv,            final ImageCallBack callback) {        final Handler handler = new Handler() {            public void handleMessage(Message msg) {                super.handleMessage(msg);                callback.setImageBitmap((Bitmap) msg.obj, iv, src);            }        };        new Thread(new Runnable() {            @Override            public void run() {                byte[] data = null;                Bitmap bitmap = null;                try {                    data = getImageBytes(src);                    bitmap = compressBitmap(data, 3);                } catch (Exception e) {                    e.printStackTrace();                }                if (bitmap != null) {                    Message msg = handler.obtainMessage(0, bitmap);                    handler.sendMessage(msg);                }            }        }).start();    }    /**     * 异步加载图片     *      * @param url     *            图片路径     * @param iv     *            ImageView     * @param imgCache     *            缓存     * @param callback     *            回调接口     */    public static void AyncLoadImageFromUrl(final String url,            final ImageView iv,            final Map<String, SoftReference<Bitmap>> imgCache,            final ImageCallBack callback) {        if (imgCache.containsKey(url))// 如果缓存中存在        {            iv.setImageBitmap(imgCache.get(url).get());            return;        }        final Handler handler = new Handler() {            public void handleMessage(Message msg) {                super.handleMessage(msg);                callback.setImageBitmap((Bitmap) msg.obj, iv, url);            }        };        new Thread(new Runnable() {            @Override            public void run() {                byte[] data = null;                Bitmap bitmap = null;                try {                    data = getImageBytes(url);                    bitmap = compressBitmap(data, 3);                } catch (Exception e) {                    e.printStackTrace();                }                if (bitmap != null) {                    // 保存到缓存中                    // 将图片保存到缓存中                    imgCache.put(url, new SoftReference<Bitmap>(bitmap));                    Message msg = handler.obtainMessage(0, bitmap);                    handler.sendMessage(msg);                }            }        }).start();    }    /**     * 保存图片到sdcard,并且返回图片名称,带后缀名     *      * @param context     * @param fileName     *            图片目录名称     * @param photo     *            图片路径     * @throws IOException     */    public static String saveImgToSdcard(Context context, String fileName,            String photo) throws IOException {        String url = photo;        // 获取图片名称,包含后缀        String imgName = url.substring(url.lastIndexOf("/") + 1, url.length());        URL Url = new URL(url);        HttpURLConnection conn = (HttpURLConnection) Url.openConnection();        InputStream is = conn.getInputStream();        String saveUrl = context.getFilesDir() + "/" + fileName + "/" + imgName;        File file = new File(saveUrl);        // 如果图片文件存在        if (file.exists())            return imgName;        FileOutputStream fos = new FileOutputStream(file);        byte[] data = new byte[512];        int len = 0;        while ((len = is.read(data)) != -1) {            fos.write(data, 0, len);        }        fos.flush();        fos.close();        return imgName;    }    /**     * 保存图片到指定的目录     *      * @param context     *            上下文     * @param filedir     *            图片目录名称     * @param name     *            图片名称     * @param bitmap     *            图片     * @throws Exception     */    public static void saveBitmapToSdcard(Context context, String filedir,            String name, Bitmap bitmap) throws Exception {        String path = context.getFilesDir() + File.separator + filedir                + File.separator;        File file = new File(path);        if (!file.exists()) {            file.mkdir();        }        file = new File(path + name + ".png");        if (file.exists())            return;        FileOutputStream fos = new FileOutputStream(file);        bitmap.compress(CompressFormat.PNG, 100, fos);        fos.close();    }    /** 从sdcard制定目录读取图片 */    public static Bitmap getBitmapFromSdcard(Context context, String file,            String name) {        String src = context.getFilesDir() + "/" + file + "/" + name;        Bitmap bitmap = BitmapFactory.decodeFile(src);        return bitmap;    }    /**     * 从缓存中读取     *      * @param url     * @return     * @throws Exception     */    public static Bitmap getImgFromCache(final String url, final ImageView iv,            final Map<String, SoftReference<Bitmap>> imgCache,            final ImageCallBack callback) throws Exception {        // 从内存中读取        if (imgCache.containsKey(url)) {            synchronized (imgCache) {                SoftReference<Bitmap> bitmapReference = imgCache.get(url);                if (null != bitmapReference) {                    return bitmapReference.get();                }            }        }        final Handler handler = new Handler() {            @Override            public void handleMessage(Message msg) {                super.handleMessage(msg);                callback.setImageBitmap((Bitmap) msg.obj, iv, url);            }        };        // 從網絡中下載        new Thread(new Runnable() {            @Override            public void run() {                Bitmap bitmap = null;                try {                    bitmap = getBitMapFromUrl(url);                } catch (IOException e) {                    e.printStackTrace();                }                // 将图片保存进内存中                imgCache.put(url, new SoftReference<Bitmap>(bitmap));                Message msg = handler.obtainMessage(0, bitmap);                handler.sendMessage(msg);            }        }).start();        return null;    }    public interface ImageCallBack {        public void setImageBitmap(Bitmap bitmap, ImageView iv, String url);    }    /**     * get 请求     *      * @param url路径     * @return     * @throws Exception     * @throws ClientProtocolException     */    public static HttpResponse get(String url) throws Exception {        HttpResponse response = null;        HttpClient client = new DefaultHttpClient();        // 设置连接超时        client.getParams().setIntParameter(                HttpConnectionParams.CONNECTION_TIMEOUT, 10000);        // 设置编码        // client.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET,        // "gb2312");        // get方式        HttpGet httpRequest = new HttpGet(url);        // 发出一个request,并返回一个基于http协议的response        // System.out.println("------toolkit 1066----------");        response = client.execute(httpRequest);        return response;    }    /**     * post请求     *      * @param path     *            请求的地址     * @param params     *            参数列表     * @return     * @throws Exception     */    public static InputStream postRequest(String path,            Map<String, String> params) throws Exception {        // 封装请求参数        List<NameValuePair> pair = new ArrayList<NameValuePair>();        if (params != null && !params.isEmpty()) {            for (Map.Entry<String, String> entry : params.entrySet()) {                pair.add(new BasicNameValuePair(entry.getKey(), entry                        .getValue()));            }        }        // 把请求参数变成请求体部分        UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, "utf-8");                                // 使用HttpPost对象设置发送的URL路径        final HttpPost post = new HttpPost(path);        // 发送请求体        post.setEntity(uee);        // 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息        DefaultHttpClient dhc = new DefaultHttpClient();        // 设置连接超时        dhc.getParams().setIntParameter(                HttpConnectionParams.CONNECTION_TIMEOUT, 10000);        dhc.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT, 10000); // 设置等待数据超时10s        HttpResponse response = dhc.execute(post);        Log.e("TAG", "服务器返回状态:----" + response.getStatusLine().getStatusCode());        if (response != null && response.getStatusLine().getStatusCode() == 200) {            return response.getEntity().getContent();        } else            post.abort();        return null;    }    /**     * post请求     *      * @param url路径     * @param list     *            参数列表     * @return     * @throws IOException     * @throws ClientProtocolException     */    public static HttpResponse post(String url, List<BasicNameValuePair> list,            String encode) throws Throwable {        HttpResponse response = null;        HttpClient client = new DefaultHttpClient();        // 设置连接超时        client.getParams().setIntParameter(                HttpConnectionParams.CONNECTION_TIMEOUT, 5000);        client.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT,                5000); // 设置等待数据超时5s        // 创建一个 基于http协议的请求(post方式)        HttpPost httpRequest = new HttpPost(url);        if (list != null) {            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, encode);            // 将请求中的参数信息放置到request中            httpRequest.setEntity(entity);        }        // 发出一个request,并返回一个基于http协议的response        response = client.execute(httpRequest);        return response;    }    /*     * 参数说明: uploadUrl: Servlet的url fileName: 上传图片的文件名(如: qq.png) fileUrl:     * 上传文件在手机客户端的完整路径(如: /sdcard/qq.png)     */    public static InputStream upload(String uploadUrl, String fileName,            String fileUrl) throws Exception {        String end = "\r\n";        String twoHyphens = "--";        String boundary = "*****";        InputStream is = null;        URL url = new URL(uploadUrl);        HttpURLConnection conn = (HttpURLConnection) url.openConnection();        /* 允许Input、Output,不使用Cache */        conn.setDoInput(true);        conn.setDoOutput(true);        conn.setUseCaches(false);        /* 设置传送的method=POST */        conn.setRequestMethod("POST");        /* setRequestProperty */        conn.setRequestProperty("Connection", "Keep-Alive");        conn.setRequestProperty("Charset", "UTF-8");        conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="                + boundary);        // 将phone放置到请求的头部        if (fileName != null && fileUrl != null) {            conn.setRequestProperty("picName", fileName);            /* 设置DataOutputStream */            DataOutputStream ds = new DataOutputStream(conn.getOutputStream());            ds.writeBytes(twoHyphens + boundary + end);            ds.writeBytes("Content-Disposition: form-data; "                    + "name=\"file1\";filename=\"" + fileName + "\"" + end);            ds.writeBytes(end);            /* 取得文件的FileInputStream */            FileInputStream fStream = new FileInputStream(fileUrl);            /* 设置每次写入1024bytes */            int bufferSize = 1024;            byte[] buffer = new byte[bufferSize];            int length = -1;            /* 从文件读取数据至缓冲区 */            while ((length = fStream.read(buffer)) != -1) {                /* 将资料写入DataOutputStream中 */                ds.write(buffer, 0, length);            }            ds.writeBytes(end);            ds.writeBytes(twoHyphens + boundary + twoHyphens + end);            /* close streams */            fStream.close();            ds.flush();            ds.close();        }        /* 取得Response内容 */        is = conn.getInputStream();        return is;    }    // -------------------------------------加密,验证,转换系列-----------------------------------------------------------    /**     * 验证是否为手机号码     *      * @param mobiles     * @return     */    public static boolean isMobileNO(String mobiles) {        // Pattern p =        // Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,1,2,5-9]))\\d{8}$");        Pattern p = Pattern.compile("^([0-9]{3})\\d{8}$");        Matcher m = p.matcher(mobiles);        return m.matches();    }    /**     * 验证输入是否为邮箱     *      * @param strEmail     * @return     */    public static boolean isEmail(String strEmail) {        String strPattern = "^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$";        Pattern p = Pattern.compile(strPattern);        Matcher m = p.matcher(strEmail);        return m.matches();    }    /**     * 验证输入是否6位数字     *      * @param strEmail     * @return     */    public static boolean isCode(String strCode) {        String strPattern = "^[0-9]{6}";        Pattern p = Pattern.compile(strPattern);        Matcher m = p.matcher(strCode);        return m.matches();    }    /**     * 验证输入是否6位字符包含数字和字母,不包含特殊字符     *      * @param strEmail     * @return     */    public static boolean isCheckCode(String strCode) {        String strPattern = "^[0-9a-zA-Z]{6}";        Pattern p = Pattern.compile(strPattern);        Matcher m = p.matcher(strCode);        return m.matches();    }    /**     * 验证输入是否6到12位上字符包含数字和字母,包含特殊字符     *      * @param strEmail     * @return     */    public static boolean isPassCode(String strCode) {        String strPattern = "^[0-9a-zA-Z@*%#()><!_~]{6,12}";        Pattern p = Pattern.compile(strPattern);        Matcher m = p.matcher(strCode);        return m.matches();    }    /**     * 过滤url     *      * @param str     * @return     */    public static boolean isLegalUrlParameters(String str) {        String strPattern = "[&=\\s]+";        Pattern p = Pattern.compile(strPattern);        Matcher m = p.matcher(str);        return m.find();    }    /**     * 验证ip     *      * @param text     * @return     */    public static boolean isIp(String text) {        if (text != null && text != "") {            // 定义正则表达式            String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."                    + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."                    + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."                    + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";            // 判断ip地址是否与正则表达式匹配            if (text.matches(regex)) {                // 返回判断信息                return true;            } else {                return false;            }        }        return false;    }    /**     * md5加密     *      * @param s     * @return     * @throws Exception     */    public final static String MD5(String s) throws Exception {        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',                'a', 'b', 'c', 'd', 'e', 'f' };        byte[] strTemp = s.getBytes();        MessageDigest mdTemp = MessageDigest.getInstance("MD5");        mdTemp.update(strTemp);        byte[] md = mdTemp.digest();        int j = md.length;        char str[] = new char[j * 2];        int k = 0;        for (int i = 0; i < j; i++) {            byte byte0 = md[i];            str[k++] = hexDigits[byte0 >>> 4 & 0xf];            str[k++] = hexDigits[byte0 & 0xf];        }        return new String(str);    }    /**     * 加密     *      * @param sSrc     *            原文     * @param sKey     *            密码是16位     * @return     * @throws Exception     */    public static String AESEncrypt(String sSrc, String sKey) throws Exception {        if (sKey == null) {            System.out.print("Key为空null");            return null;        }        // 判断Key是否为16位        if (sKey.length() != 16) {            System.out.print("Key无效");            return null;        }        byte[] raw = sKey.getBytes();        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");        IvParameterSpec iv = new IvParameterSpec("0102030405060708".getBytes());        cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);        byte[] encrypted = cipher.doFinal(sSrc.getBytes());        return byte2hex(encrypted).toLowerCase();    }    /**     * 解密     *      * @param sSrc     * @param sKey密码是16位     * @return     * @throws Exception     */    public static String AESDecrypt(String sSrc, String sKey) throws Exception {        // 判断Key是否正确        if (sKey == null) {            System.out.print("Key为空null");            return null;        }        // 判断Key是否为16位        if (sKey.length() != 16) {            System.out.print("Key无效");            return null;        }        byte[] raw = sKey.getBytes("ASCII");        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");        IvParameterSpec iv = new IvParameterSpec("0102030405060708".getBytes());        cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);        byte[] encrypted1 = hex2byte(sSrc);        byte[] original = cipher.doFinal(encrypted1);        String originalString = new String(original);        return originalString;    }    private static final byte[] HEX_CHAR_TABLE = { (byte) '0', (byte) '1',            (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6',            (byte) '7', (byte) '8', (byte) '9', (byte) 'A', (byte) 'B',            (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F' };    /**     * 十六进制无符号整数形式     *      * @param raw     * @param len     * @return     */    public static String getHex(byte[] raw, int len) {        byte[] hex = new byte[2 * len];        int index = 0;        int pos = 0;        for (byte b : raw) {            if (pos >= len)                break;            pos++;            int v = b & 0xFF;            hex[index++] = HEX_CHAR_TABLE[v >>> 4];            hex[index++] = HEX_CHAR_TABLE[v & 0xF];        }        return new String(hex);    }    /**     * 转换为10进制无符号字符串     *      * @param bytes     * @return     */    public static long getDec(byte[] bytes) {        long result = 0;        long factor = 1;        for (int i = 0; i < bytes.length; ++i) {            long value = bytes[i] & 0xffl;            result += value * factor;            factor *= 256l;        }        return result;    }    /**     * 二进制转换为16进制     *      * @param b     * @return     */    public static String byte2hex(byte[] b) {        String hs = "";        String stmp = "";        for (int n = 0; n < b.length; n++) {            stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));            if (stmp.length() == 1) {                hs = hs + "0" + stmp;            } else {                hs = hs + stmp;            }        }        return hs.toUpperCase();    }    /**     * 16进制转换为二进制     *      * @param strhex     * @return     */    public static byte[] hex2byte(String strhex) {        if (strhex == null) {            return null;        }        int l = strhex.length();        if (l % 2 == 1) {            return null;        }        byte[] b = new byte[l / 2];        for (int i = 0; i != l / 2; i++) {            b[i] = (byte) Integer.parseInt(strhex.substring(i * 2, i * 2 + 2),                    16);        }        return b;    }    /**     * 16进制字符转换为int     *      * @param c     * @return     */    public static int reverseToInt(char c) {        if (c == 'A')            return 10;        else if (c == 'B')            return 11;        else if (c == 'C')            return 12;        else if (c == 'D')            return 13;        else if (c == 'E')            return 14;        else if (c == 'F')            return 15;        else            return Integer.parseInt(String.valueOf(c));    }    /**     * 16进制加法     *      * @param src1     * @param src2     * @return     */    public static String hexAdd(String src1, String src2) {        int length1 = src1.toUpperCase().length();        int length2 = src2.toUpperCase().length();        String extend = "";        char sum[] = null;        if (length1 > length2) {// 如果src1的长度大于src2            int num = length1 - length2;            sum = new char[length1];            String zero = "";            for (int i = 0; i < num; i++) {                zero += "0";            }            src2 = zero + src2;            // 遍历数组,然后相加            int add = 0, rest = 0;            for (int i = length1 - 1; i >= 0; i--) {                int a = reverseToInt(src1.toUpperCase().charAt(i));                int b = reverseToInt(src2.toUpperCase().charAt(i));                if (a + b + add >= 16) {                    int temp = add;                    add = (a + b + add) / 16;                    rest = (a + b + temp) % 16;                    sum[i] = reverseToChar(rest);                } else {                    sum[i] = reverseToChar(a + b + add);                    add = 0;                }            }        } else if (length1 < length2) {// src1的长度小于src2            int num = length2 - length1;            sum = new char[length2];            String zero = "";            for (int i = 0; i < num; i++) {                zero += "0";            }            src1 = zero + src1;            // 遍历数组,然后相加            int add = 0, rest = 0;            for (int i = length2 - 1; i >= 0; i--) {                int a = reverseToInt(src1.toUpperCase().charAt(i));                int b = reverseToInt(src2.toUpperCase().charAt(i));                if (a + b + add >= 16) {                    int temp = add;                    add = (a + b + add) / 16;                    rest = (a + b + temp) % 16;                    sum[i] = reverseToChar(rest);                } else {                    sum[i] = reverseToChar(a + b + add);                    add = 0;                }            }        } else {// 如果相等            // 遍历数组,然后相加            sum = new char[length2];            int add = 0, rest = 0;            for (int i = length2 - 1; i >= 0; i--) {                int a = reverseToInt(src1.toUpperCase().charAt(i));                int b = reverseToInt(src2.toUpperCase().charAt(i));                if (a + b + add >= 16) {                    int temp = add;                    add = (a + b + add) / 16;                    rest = (a + b + temp) % 16;                    sum[i] = reverseToChar(rest);                    if (i == 0) {// 如果i==0                        extend = String.valueOf(add);                    }                } else {                    sum[i] = reverseToChar(a + b + add);                    add = 0;                }            }        }        return extend + String.valueOf(sum);    }    /**     * 整形转为16进制表示的char     *      * @param num     * @return     */    public static char reverseToChar(int num) {        /*         * if (num == 10) return 'A'; else if (num == 11) return 'B'; else if         * (num == 12) return 'C'; else if (num == 13) return 'D'; else if (num         * == 14) return 'E'; else if (num == 15) return 'F'; else return         * String.valueOf(num).charAt(0);         */        return Integer.toHexString(num).charAt(0);    }    /**     * 16进制字符按位取反     *      * @param num     * @return     */    public static String revers(String num) {        num = num.toUpperCase();        char array[] = num.toCharArray();        for (int i = 0; i < array.length; i++) {            if (array[i] == 'A')                array[i] = reverseToChar(15 - 10);            else if (array[i] == 'B')                array[i] = reverseToChar(15 - 11);            else if (array[i] == 'C')                array[i] = reverseToChar(15 - 12);            else if (array[i] == 'D')                array[i] = reverseToChar(15 - 13);            else if (array[i] == 'E')                array[i] = reverseToChar(15 - 14);            else if (array[i] == 'F')                array[i] = reverseToChar(15 - 15);            else                array[i] = reverseToChar(15 - Integer.parseInt(String                        .valueOf(array[i])));        }        //        return String.valueOf(array);    }    /**     * 输入流转换为byte数组     *      * @param is     * @return     * @throws IOException     */    public static byte[] streamToBytes(InputStream is) throws IOException {        ByteArrayOutputStream os = new ByteArrayOutputStream();        byte[] buffer = new byte[1024];        int len;        while ((len = is.read(buffer)) != -1) {            os.write(buffer, 0, len);        }        return os.toByteArray();    }    /**     * 将输入流转为字符串     *      * @param is     *            输入流     * @param encode     *            编码方式     * @return     * @throws Exception     */    public static String streamToString(InputStream is, String encode)            throws Exception {        byte[] data = streamToBytes(is);        return new String(data, encode);    }    /**     * 将String转换成InputStream     *      * @param in     * @return     * @throws UnsupportedEncodingException     * @throws Exception     */    public static InputStream StringTOInputStream(String in, String encode)            throws IOException {        ByteArrayInputStream is = new ByteArrayInputStream(in.getBytes(encode));        return is;    }    /**     * 将byte数组转换为输入流     *      * @param data     * @return     */    public static InputStream ByteToStream(byte[] data) {        ByteArrayInputStream os = new ByteArrayInputStream(data);        return os;    }    /**     * 资源文件转换为bitmap     *      * @param context     * @param resId     * @return     */    public static Bitmap getBitmapFromResource(Context context, int resId) {        InputStream is = context.getResources().openRawResource(resId);        return BitmapFactory.decodeStream(is);    }    /**     * 返回当前日期xxxx年x月xx日x星期     *      * @return     */    public static String getDate() {        Date date = new Date();        Calendar c = Calendar.getInstance();        c.setTime(date);        String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };        int w = c.get(Calendar.DAY_OF_WEEK) - 1;        if (w < 0) {            w = 0;        }        String mDate = c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月"                + c.get(Calendar.DATE) + "日  " + weekDays[w];        return mDate;    }}
原创粉丝点击