Browse Source

Merge branch 'developer_master' of https://gitlab.com/Arisono/SkWeiChat-Baidu into developer_master

gongpm 9 years ago
parent
commit
2b094bc04b

+ 7 - 0
WeiChat/build.gradle

@@ -8,6 +8,12 @@ android {
 //            storePassword '13237658359'
 //            storePassword '13237658359'
 //            keyAlias 'jie-20150409'
 //            keyAlias 'jie-20150409'
 //        }
 //        }
+        config {
+            keyPassword '13237658359'
+            storeFile file('C:/Users/Arisono/Desktop/applicationsignname[20150409]')
+            storePassword '13237658359'
+            keyAlias 'jie-20150409'
+        }
     }
     }
     compileSdkVersion 22
     compileSdkVersion 22
     buildToolsVersion "22.0.1"
     buildToolsVersion "22.0.1"
@@ -31,6 +37,7 @@ android {
         }
         }
         debug {
         debug {
 //            signingConfig signingConfigs.发布版
 //            signingConfig signingConfigs.发布版
+            signingConfig signingConfigs.config
         }
         }
     }
     }
 }
 }

+ 3 - 3
WeiChat/src/main/AndroidManifest.xml

@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.xzjmyk.pm.activity"
     package="com.xzjmyk.pm.activity"
-    android:versionCode="37"
-    android:versionName="3.7" >
+    android:versionCode="41"
+    android:versionName="4.1" >
 
 
     <uses-sdk
     <uses-sdk
         android:minSdkVersion="14"
         android:minSdkVersion="14"
         android:targetSdkVersion="22" />
         android:targetSdkVersion="22" />
-b
+
     <!-- 拨打电话 -->
     <!-- 拨打电话 -->
     <uses-permission android:name="android.permission.CALL_PHONE" />
     <uses-permission android:name="android.permission.CALL_PHONE" />
 
 

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/SQLiteHelper.java

@@ -26,7 +26,7 @@ import java.sql.SQLException;
 
 
 public class SQLiteHelper extends OrmLiteSqliteOpenHelper {
 public class SQLiteHelper extends OrmLiteSqliteOpenHelper {
 	public static final String DATABASE_NAME = "shiku.db";
 	public static final String DATABASE_NAME = "shiku.db";
-	private static final int DATABASE_VERSION = 39;
+	private static final int DATABASE_VERSION = 41;
 
 
 	// public static final String DATABASE_PATH = Config.SDCARD_PATH +
 	// public static final String DATABASE_PATH = Config.SDCARD_PATH +
 	// File.separator + "shiku" + File.separator + "shiku.db";
 	// File.separator + "shiku" + File.separator + "shiku.db";

+ 7 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/helper/LoginHelper.java

@@ -4,7 +4,9 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.IntentFilter;
 import android.text.TextUtils;
 import android.text.TextUtils;
+import android.util.Log;
 
 
+import com.alibaba.fastjson.JSON;
 import com.android.volley.Response;
 import com.android.volley.Response;
 import com.android.volley.VolleyError;
 import com.android.volley.VolleyError;
 import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.AppConfig;
@@ -126,8 +128,10 @@ public class LoginHelper {
 				if (LoginHelper.isTokenValidation()) {// Token未过期
 				if (LoginHelper.isTokenValidation()) {// Token未过期
 					boolean isUpdate = UserSp.getInstance(context).isUpdate(true);
 					boolean isUpdate = UserSp.getInstance(context).isUpdate(true);
 					if (isUpdate) {
 					if (isUpdate) {
+						Log.i("Arison", "prepareUser() returned: " + "userStatus:"+STATUS_USER_FULL);
 						userStatus = STATUS_USER_FULL;
 						userStatus = STATUS_USER_FULL;
 					} else {
 					} else {
+						Log.i("Arison", "prepareUser() returned: " + "userStatus:"+STATUS_USER_NO_UPDATE);
 						userStatus = STATUS_USER_NO_UPDATE;
 						userStatus = STATUS_USER_NO_UPDATE;
 					}
 					}
 				} else {// Token过期
 				} else {// Token过期
@@ -252,13 +256,13 @@ public class LoginHelper {
 			}
 			}
 			return;
 			return;
 		}
 		}
-
+        //6
 		if (status == STATUS_USER_VALIDATION) {
 		if (status == STATUS_USER_VALIDATION) {
 			MyApplication.getInstance().mUserStatusChecked = true;
 			MyApplication.getInstance().mUserStatusChecked = true;
 			broadcastLogin(activity);
 			broadcastLogin(activity);
 			return;
 			return;
 		}
 		}
-
+           //4
 		if (status == STATUS_USER_TOKEN_CHANGE) {// Token已经变更,直接提示,不需要再检测Token是否变更
 		if (status == STATUS_USER_TOKEN_CHANGE) {// Token已经变更,直接提示,不需要再检测Token是否变更
 			MyApplication.getInstance().mUserStatusChecked = true;
 			MyApplication.getInstance().mUserStatusChecked = true;
 			broadcastNeedUpdate(activity);
 			broadcastNeedUpdate(activity);
@@ -299,6 +303,7 @@ public class LoginHelper {
 					public void onResponse(ObjectResult<LoginAuto> result) {
 					public void onResponse(ObjectResult<LoginAuto> result) {
 						boolean success = Result.defaultParser(activity, result, false);
 						boolean success = Result.defaultParser(activity, result, false);
 						if (success && result.getData() != null) {
 						if (success && result.getData() != null) {
+							Log.i("Arison","设备登陆信息:"+ JSON.toJSONString(result));
 							MyApplication.getInstance().mUserStatusChecked = true;// 检测Token成功
 							MyApplication.getInstance().mUserStatusChecked = true;// 检测Token成功
 							int tokenExists = result.getData().getTokenExists();// 1=令牌存在、0=令牌不存在
 							int tokenExists = result.getData().getTokenExists();// 1=令牌存在、0=令牌不存在
 							int serialStatus = result.getData().getSerialStatus();// 1=没有设备号、2=设备号一致、3=设备号不一致
 							int serialStatus = result.getData().getSerialStatus();// 1=没有设备号、2=设备号一致、3=设备号不一致

+ 10 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/helper/UploadEngine.java

@@ -12,6 +12,8 @@ import com.xzjmyk.pm.activity.bean.UploadFileResult;
 import com.xzjmyk.pm.activity.bean.message.ChatMessage;
 import com.xzjmyk.pm.activity.bean.message.ChatMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
 import com.xzjmyk.pm.activity.db.dao.ChatMessageDao;
 import com.xzjmyk.pm.activity.db.dao.ChatMessageDao;
+import com.xzjmyk.pm.activity.util.FileSizeUtil;
+import com.xzjmyk.pm.activity.util.ImageUtil;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.Result;
 
 
 import org.apache.http.Header;
 import org.apache.http.Header;
@@ -42,8 +44,14 @@ public class UploadEngine {
 		Log.d("roamer", "userId..."+loginUserId);
 		Log.d("roamer", "userId..."+loginUserId);
 		Log.d("roamer", "access_token..."+MyApplication.getInstance().mAccessToken);
 		Log.d("roamer", "access_token..."+MyApplication.getInstance().mAccessToken);
 		try {
 		try {
-			params.put("file1", new File(message.getFilePath()));
-			Log.d("roamer", "开始上传...类型"+message.getType()+"...."+message.getFilePath());
+			params.put("file1", ImageUtil.compressBitmapToFile(
+					message.getFilePath(),100,300,300));
+			Log.d("roamer", "开始上传...类型" + message.getType() + "...." + message.getFilePath()
+					+ "文件大小:" + FileSizeUtil.getFileOrFilesSize(message.getFilePath(), FileSizeUtil.SIZETYPE_MB) + "MB");
+            Log.i("Arison","UploadEngine:uploadImFile:49: 压缩文件大小:"
+							+ FileSizeUtil.getFileOrFilesSize(ImageUtil.compressBitmapToFile(
+							message.getFilePath(),100,300,300).getAbsolutePath(),FileSizeUtil.SIZETYPE_MB)
+			);
 		} catch (FileNotFoundException e) {
 		} catch (FileNotFoundException e) {
 			e.printStackTrace();
 			e.printStackTrace();
 		}
 		}

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -336,7 +336,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
                 mCoreService.logout();
                 mCoreService.logout();
                 removeNeedUserFragment(true);
                 removeNeedUserFragment(true);
                 cancelUserCheckIfExist();
                 cancelUserCheckIfExist();
-                // 弹出对话框
+                // 弹出对话框---用户冲突LoginHelper.STATUS_USER_TOKEN_CHANGE
                 startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
                 startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
                 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
                 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
                     mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
                     mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
@@ -350,7 +350,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
                 mCoreService.logout();
                 mCoreService.logout();
                 removeNeedUserFragment(true);
                 removeNeedUserFragment(true);
                 cancelUserCheckIfExist();
                 cancelUserCheckIfExist();
-                // 弹出对话框
+                // 弹出对话框---LoginHelper.STATUS_USER_TOKEN_CHANGE=4
                 startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
                 startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
                 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
                 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
                     mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
                     mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/DataDownloadActivity.java

@@ -115,7 +115,7 @@ public class DataDownloadActivity extends BaseActivity {
 	}
 	}
 
 
 	private void endDownload() {
 	private void endDownload() {
-		// 只有有一个下载没返回,那么就继续等待
+		// 只有有一个下载没返回,那么就继续等待   ---等待请求----
 		if (circle_msg_download_status == STATUS_NO_RESULT || address_user_download_status == STATUS_NO_RESULT
 		if (circle_msg_download_status == STATUS_NO_RESULT || address_user_download_status == STATUS_NO_RESULT
 				|| user_info_download_status == STATUS_NO_RESULT || user_photo_download_status == STATUS_NO_RESULT
 				|| user_info_download_status == STATUS_NO_RESULT || user_photo_download_status == STATUS_NO_RESULT
 				|| room_download_status == STATUS_NO_RESULT) {
 				|| room_download_status == STATUS_NO_RESULT) {

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBOpenHelper.java

@@ -13,7 +13,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.Constants;
  */
  */
 public class DBOpenHelper extends SQLiteOpenHelper {
 public class DBOpenHelper extends SQLiteOpenHelper {
 
 
-    private static final int DATABASE_VERSION = 39;//数据库版本号
+    private static final int DATABASE_VERSION = 41;//数据库版本号
     public static String dataBaseName = "erp.db";//数据库名称
     public static String dataBaseName = "erp.db";//数据库名称
     public Context context;
     public Context context;
 
 

+ 0 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MucChatActivity.java

@@ -91,7 +91,6 @@ public class MucChatActivity extends ActionBackActivity
     private Handler mHandler = new Handler() {
     private Handler mHandler = new Handler() {
         @Override
         @Override
         public void handleMessage(Message msg) {
         public void handleMessage(Message msg) {
-            //TODO 群聊时发送百度推送
             if (msg.what == 5) {
             if (msg.what == 5) {
             } else {
             } else {
             }
             }

+ 155 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/FileSizeUtil.java

@@ -0,0 +1,155 @@
+package com.xzjmyk.pm.activity.util;
+
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.text.DecimalFormat;
+
+/**
+ * Created by Arisono on 2016/5/25.
+ */
+public class FileSizeUtil {
+    public static final int SIZETYPE_B = 1;//获取文件大小单位为B的double值
+    public static final int SIZETYPE_KB = 2;//获取文件大小单位为KB的double值
+    public static final int SIZETYPE_MB = 3;//获取文件大小单位为MB的double值
+    public static final int SIZETYPE_GB = 4;//获取文件大小单位为GB的double值
+    /**
+     * 获取文件指定文件的指定单位的大小
+     *
+     * @param filePath 文件路径
+     * @param sizeType 获取大小的类型1为B、2为KB、3为MB、4为GB
+     * @return double值的大小
+     */
+    public static double getFileOrFilesSize(String filePath, int sizeType) {
+        File file = new File(filePath);
+        long blockSize = 0;
+        try {
+            if (file.isDirectory()) {
+                blockSize = getFileSizes(file);
+            } else {
+                blockSize = getFileSize(file);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            Log.e("获取文件大小", "获取失败!");
+        }
+        return FormetFileSize(blockSize, sizeType);
+    }
+
+    /**
+     * 调用此方法自动计算指定文件或指定文件夹的大小
+     *
+     * @param filePath 文件路径
+     * @return 计算好的带B、KB、MB、GB的字符串
+     */
+    public static String getAutoFileOrFilesSize(String filePath) {
+        File file = new File(filePath);
+        long blockSize = 0;
+        try {
+            if (file.isDirectory()) {
+                blockSize = getFileSizes(file);
+            } else {
+                blockSize = getFileSize(file);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            Log.e("获取文件大小", "获取失败!");
+        }
+        return FormetFileSize(blockSize);
+    }
+
+    /**
+     * 获取指定文件大小
+     *
+     * @param
+     * @return
+     * @throws Exception
+     */
+    private static long getFileSize(File file) throws Exception {
+        long size = 0;
+        if (file.exists()) {
+            FileInputStream fis = null;
+            fis = new FileInputStream(file);
+            size = fis.available();
+        } else {
+            file.createNewFile();
+            Log.e("获取文件大小", "文件不存在!");
+        }
+        return size;
+    }
+
+    /**
+     * 获取指定文件夹
+     *
+     * @param f
+     * @return
+     * @throws Exception
+     */
+    private static long getFileSizes(File f) throws Exception {
+        long size = 0;
+        File flist[] = f.listFiles();
+        for (int i = 0; i < flist.length; i++) {
+            if (flist[i].isDirectory()) {
+                size = size + getFileSizes(flist[i]);
+            } else {
+                size = size + getFileSize(flist[i]);
+            }
+        }
+        return size;
+    }
+
+    /**
+     * 转换文件大小
+     *
+     * @param fileS
+     * @return
+     */
+    private static String FormetFileSize(long fileS) {
+        DecimalFormat df = new DecimalFormat("#.00");
+        String fileSizeString = "";
+        String wrongSize = "0B";
+        if (fileS == 0) {
+            return wrongSize;
+        }
+        if (fileS < 1024) {
+            fileSizeString = df.format((double) fileS) + "B";
+        } else if (fileS < 1048576) {
+            fileSizeString = df.format((double) fileS / 1024) + "KB";
+        } else if (fileS < 1073741824) {
+            fileSizeString = df.format((double) fileS / 1048576) + "MB";
+        } else {
+            fileSizeString = df.format((double) fileS / 1073741824) + "GB";
+        }
+        return fileSizeString;
+    }
+
+    /**
+     * 转换文件大小,指定转换的类型
+     *
+     * @param fileS
+     * @param sizeType
+     * @return
+     */
+    private static double FormetFileSize(long fileS, int sizeType) {
+        DecimalFormat df = new DecimalFormat("#.00");
+        double fileSizeLong = 0;
+        switch (sizeType) {
+            case SIZETYPE_B:
+                fileSizeLong = Double.valueOf(df.format((double) fileS));
+                break;
+            case SIZETYPE_KB:
+                fileSizeLong = Double.valueOf(df.format((double) fileS / 1024));
+                break;
+            case SIZETYPE_MB:
+                fileSizeLong = Double.valueOf(df.format((double) fileS / 1048576));
+                break;
+            case SIZETYPE_GB:
+                fileSizeLong = Double.valueOf(df.format((double) fileS / 1073741824));
+                break;
+            default:
+                break;
+        }
+        return fileSizeLong;
+    }
+}

+ 272 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/ImageUtil.java

@@ -0,0 +1,272 @@
+package com.xzjmyk.pm.activity.util;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Matrix;
+import android.media.ExifInterface;
+import android.util.Log;
+
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * Created by Arisono on 2016/5/25.
+ * 处理图片工具类
+ */
+public class ImageUtil {
+
+
+    /**
+     *在部分Android手机(如MT788、Note2)上,
+     * 使用Camera拍照以后,得到的照片会被自动旋转(90°、180°、270°)
+     * ,这个情况很不符合预期。仔细分析了一下,
+     * 因为照片属性中是存储了旋转信息的,
+     * 所以要解决这个问题,可以在onActivityResult方法中,
+     * 获取到照片数据后,读取它的旋转信息,如果不是0,
+     * 说明这个照片已经被旋转过了,那么再使用android.graphics.Matrix将照片旋转回去即可。*/
+
+    /**
+     * @author Administrator
+     * @功能:兼容性三星等手机旋转问题+等比例缩放
+     */
+    public static Bitmap roateBitmapAndScale(Bitmap bitmap, int degree, int newWidth ,int newHeight ) {
+        if (degree == 0) {
+            return bitmap;
+        }
+        // 获得图片的宽高
+        int width = bitmap.getWidth();
+       // int height = bitmap.getHeight();
+        // 计算缩放比例
+        float scaleWidth = ((float) newWidth) / width;
+        //float scaleHeight = ((float) newHeight) / height;
+        Matrix matrix = new Matrix();
+        matrix.postRotate(degree); //解决旋转问题
+        matrix.postScale(scaleWidth, scaleWidth);//等比例缩放
+        Bitmap bmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
+        return bmp;
+    }
+
+
+    /**
+     * 将图片按照某个角度进行旋转
+     * @param bm  需要旋转的图片
+     * @param degree  旋转角度 getBitmapDegree()
+     * @return 旋转后的图片  无等比例缩放
+     */
+    public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) {
+        Bitmap returnBm = null;
+        // 根据旋转角度,生成旋转矩阵
+        Matrix matrix = new Matrix();
+        matrix.postRotate(degree);
+        try {
+            // 将原始图片按照旋转矩阵进行旋转,并得到新的图片
+            returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
+        } catch (OutOfMemoryError e) {
+        }
+        if (returnBm == null) {
+            returnBm = bm;
+        }
+        if (bm != returnBm) {
+            bm.recycle();
+        }
+        return returnBm;
+    }
+
+    /**
+     * 读取图片的旋转的角度
+     * @param path 图片绝对路径
+     * @return 图片的旋转角度
+     */
+    private int getBitmapDegree(String path) {
+        int degree = 0;
+        try {
+            // 从指定路径下读取图片,并获取其EXIF信息
+            ExifInterface exifInterface = new ExifInterface(path);
+            // 获取图片的旋转信息
+            int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,
+                    ExifInterface.ORIENTATION_NORMAL);
+            switch (orientation) {
+                case ExifInterface.ORIENTATION_ROTATE_90:
+                    degree = 90;
+                    break;
+                case ExifInterface.ORIENTATION_ROTATE_180:
+                    degree = 180;
+                    break;
+                case ExifInterface.ORIENTATION_ROTATE_270:
+                    degree = 270;
+                    break;
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return degree;
+    }
+
+
+
+  /**
+   * @功能:计算图片的缩放值
+   * @param:
+   * @author:Arisono
+   */
+    public static int calculateInSampleSize(BitmapFactory.Options options,int reqWidth, int reqHeight) {
+        final int height = options.outHeight;
+        final int width = options.outWidth;
+        int inSampleSize = 1;
+        if (reqHeight == 0 || reqWidth == 0) return 1;
+        Log.i("Arison","ImageUtil:calculateInSampleSize:121:"+width);
+        Log.i("Arison","ImageUtil:calculateInSampleSize:121:"+height);
+        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;
+    }
+
+
+
+
+
+    /**
+     * 压缩已存在的图片对象,并返回压缩后的图片(压缩质量,压缩尺寸函数)
+     * @param bitmap :图片对象
+     * @param quality:1-100;100表示不质量压缩
+     * @param reqsW:压缩宽度
+     * @param reqsH:压缩高度
+     * @return
+     */
+    public final static Bitmap compressBitmap(Bitmap bitmap, int quality,int reqsW, int reqsH) {
+        try {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();//放入内存
+            bitmap.compress(Bitmap.CompressFormat.PNG, quality, baos);//压缩质量
+            byte[] bts = baos.toByteArray();
+            Bitmap res = compressBitmapWithByte(bts, reqsW, reqsH);//压缩尺寸
+            baos.close();
+            return res;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return bitmap;
+        }
+    }
+
+
+    /**
+     * 压缩已存在的图片对象,并返回压缩后的图片(压缩质量,压缩尺寸函数)
+     * @param bitmap :图片对象
+     * @param quality:1-100;100表示不质量压缩
+     * @param reqsW:压缩宽度
+     * @param reqsH:压缩高度
+     * @return Bitmap
+     */
+    public final static Bitmap compressBitmap(String path, int quality,int reqsW, int reqsH) {
+        Bitmap bitmap=compressBitmapWithFilePath(path,reqsW,reqsH);
+        try {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();//放入内存
+            bitmap.compress(Bitmap.CompressFormat.PNG, quality, baos);//压缩质量
+            byte[] bts = baos.toByteArray();
+           // Bitmap res = compressBitmapWithByte(bts, reqsW, reqsH);//压缩尺寸
+            Bitmap res=bytes2Bimap(bts);
+            baos.close();
+            return res;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return bitmap;
+        }
+    }
+
+
+    /**
+     * 压缩已存在的图片对象,并返回压缩后的图片文件(压缩质量,压缩尺寸函数)
+     * @param bitmap :图片对象
+     * @param quality:1-100;100表示不质量压缩
+     * @param reqsW:压缩宽度
+     * @param reqsH:压缩高度
+     * @return Bitmap
+     */
+    public final static File compressBitmapToFile(String filePath, int quality,int reqsW, int reqsH) {
+        Bitmap bitmap=compressBitmapWithFilePath(filePath,reqsW,reqsH);
+        try {
+           // ByteArrayOutputStream baos = new ByteArrayOutputStream();//放入内存
+            File file=new File(filePath);
+            BufferedOutputStream baos = new BufferedOutputStream(new FileOutputStream(file));
+            bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos);//压缩质量
+            baos.flush();
+            baos.close();
+            return file;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+
+    /**
+     * 压缩已存在的图片对象,并返回压缩后的图片文件(压缩质量,压缩尺寸函数)
+     * @param bitmap :图片对象
+     * @param quality:1-100;100表示不质量压缩
+     * @param reqsW:压缩宽度
+     * @param reqsH:压缩高度
+     * @return Bitmap
+     */
+    /*public final static File compressBitmapToFile(String filePath, int quality) {
+        Bitmap bitmap=compressBitmapWithFilePath(filePath,0,0);
+        try {
+            // ByteArrayOutputStream baos = new ByteArrayOutputStream();//放入内存
+            File file=new File(filePath);
+            BufferedOutputStream baos = new BufferedOutputStream(new FileOutputStream(file));
+            bitmap.compress(Bitmap.CompressFormat.PNG, quality, baos);//压缩质量
+            baos.flush();
+            baos.close();
+            return file;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }*/
+    /**
+     * 压缩指定byte[]图片,并得到压缩后的图像
+     * @param bts
+     * @param reqsW
+     * @param reqsH
+     * @return
+     */
+    public final static Bitmap compressBitmapWithByte(byte[] bts, int reqsW, int reqsH) {
+        final BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inJustDecodeBounds = true;
+        BitmapFactory.decodeByteArray(bts, 0, bts.length, options);
+        options.inSampleSize =   calculateInSampleSize(options, reqsW, reqsH);//计算尺寸比例
+        options.inJustDecodeBounds = false;
+        return BitmapFactory.decodeByteArray(bts, 0, bts.length, options);
+    }
+
+    /**
+     * @功能:压缩指定filePath图片,并得到压缩后的图像
+     * @author:Arisono
+     * @param:filePath:图片路径
+     * @return: Bitmap
+     */
+    public static Bitmap compressBitmapWithFilePath(String filePath,int reqsW, int reqsH) {
+        final BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inJustDecodeBounds = true;
+        BitmapFactory.decodeFile(filePath, options);
+        options.inSampleSize =   calculateInSampleSize(options, reqsW, reqsH);
+        Log.i("Arison", "ImageUtil:compressBitmapWithFilePath:254:calculateInSampleSize(options, reqsW, reqsH)=" + calculateInSampleSize(options, reqsW, reqsH));
+        options.inJustDecodeBounds = false;
+        Log.i("Arison","ImageUtil:compressBitmapWithFilePath:257:压缩尺寸原图大小:"+FileSizeUtil.getFileOrFilesSize(filePath,FileSizeUtil.SIZETYPE_MB)+"MB");
+        return BitmapFactory.decodeFile(filePath, options);
+    }
+
+
+
+    public static Bitmap bytes2Bimap(byte[] b) {
+        if (b.length != 0) {
+            return BitmapFactory.decodeByteArray(b, 0, b.length);
+        } else {
+            return null;
+        }
+    }
+}

+ 1 - 0
WeiChat/src/main/res/layout/chat.xml

@@ -28,6 +28,7 @@
             android:layout_below="@+id/auth_state_tip"
             android:layout_below="@+id/auth_state_tip"
             android:background="@drawable/bg_chat"
             android:background="@drawable/bg_chat"
             android:cacheColorHint="#00000000"
             android:cacheColorHint="#00000000"
+            android:dividerHeight="10dp"
             android:divider="#00000000"
             android:divider="#00000000"
             android:fadingEdge="none" />
             android:fadingEdge="none" />