From 5f12988a77d078a5e5155c9a301e45bfd288d7e5 Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期五, 11 八月 2017 16:02:50 +0800
Subject: [PATCH] 

---
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java                          |    8 
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/MyBitmapUtils.java                  |   51 +++
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java              |  110 +++++++
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MjpegInputStream.java                      |   82 +++++
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/LocalCacheUtils.java                |   71 ++++
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java                    |   31 +
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PhoneCallMng.java                       |   27 +
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java                                |    2 
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MD5Encoder.java                            |   19 +
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java             |    2 
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/checkin/CheckInRightIntervieweeCell.java |    4 
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/InternetAccessThread.java               |   69 +++-
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MjpegView.java                             |  210 ++++++++++++++
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/ToastUtil.java                             |   18 +
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/NetCacheUtils.java                  |  131 ++++++++
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/MemoryCacheUtils.java               |   57 +++
 16 files changed, 854 insertions(+), 38 deletions(-)

diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java
index 4ce84c5..ef53c46 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/DeviceFragment.java
@@ -6,6 +6,7 @@
 import android.view.View;
 import android.widget.EditText;
 import android.widget.FrameLayout;
+import android.widget.LinearLayout;
 import android.widget.RadioButton;
 import android.widget.Toast;
 
@@ -102,6 +103,11 @@
     private EditText fragment_device_right_device_info_device_address;
     @ViewInject(R.id.fragment_device_right_device_info_school_name)
     private EditText fragment_device_right_device_info_school_name;
+    @ViewInject(R.id.fragment_device_left_parent)
+    private LinearLayout fragment_device_left_parent;
+    @ViewInject(R.id.fragment_device_right_parent)
+    private LinearLayout fragment_device_right_parent;
+
 
     private View wifiView;
     private View lanView;
@@ -111,6 +117,7 @@
 
     private DeviceQueryItem camera1;
     private DeviceQueryItem camera2;
+    private Device androidDevice;
 
     public DeviceQueryItem getCamera2() {
         return camera2;
@@ -144,8 +151,23 @@
         ViewUtils.inject(this, camera2View);
         fragment_device_left_wifi_check_box.setChecked(true);
         loadSharedPreferenceValues();
-        setupUI(getLeftView());
-        setupUI(getRightView());
+        setupUI(fragment_device_left_parent);
+        setupUI(fragment_device_right_parent);
+        setupUI(wifiView);
+        setupUI(lanView);
+        setupUI(schoolView);
+        setupUI(camera1View);
+        setupUI(camera2View);
+    }
+
+    @OnClick(R.id.fragment_device_left_parent)
+    public void fragment_device_left_parent_click(View view) {
+        System.out.println("aa");
+    }
+
+    @OnClick(R.id.fragment_device_right_parent)
+    public void fragment_device_right_parent_click(View view) {
+        System.out.println("aa");
     }
 
     private void loadSharedPreferenceValues() {
@@ -367,7 +389,10 @@
     }
 
     public void setAndroidDevice(Device androidDevice) {
-
+        this.androidDevice = androidDevice;
+        fragment_device_right_device_info_school_name.setText(androidDevice.getSchoolName());
+        fragment_device_right_device_info_sn.setText(androidDevice.getSn());
+        fragment_device_right_device_info_device_address.setText(androidDevice.getInstallAddress());
     }
 
     public void setCamera1(DeviceQueryItem camera1) {
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
index 01d36d3..49b6366 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
@@ -1,7 +1,10 @@
 package cn.com.basic.face.fragment;
 
-import android.app.AlarmManager;
 import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.net.Uri;
 import android.net.wifi.WifiManager;
 import android.os.Build;
 import android.os.Bundle;
@@ -17,12 +20,17 @@
 
 import com.bsk.zhangbo.demoforbsk.R;
 
+import cn.com.basic.face.base.BaseApplication;
 import cn.com.basic.face.base.BaseFragment;
 
 import cn.com.basic.face.base.MainActivity;
 import cn.com.basic.face.discern.common.CommonVariables;
-import cn.com.basic.face.service.DeviceMng;
+import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
 import cn.com.basic.face.thread.StartCameraThread;
+import cn.com.basic.face.util.FileUtil;
+import cn.com.basic.face.util.MjpegInputStream;
+import cn.com.basic.face.util.MjpegView;
+import cn.com.basic.face.util.NativeImg;
 import cn.com.basic.face.util.RtspFaceNative;
 
 import cn.com.basic.face.service.SurveillanceMng;
@@ -32,8 +40,9 @@
 
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.lidroid.xutils.view.annotation.event.OnClick;
+import com.luxand.FSDK;
 
-import java.io.DataOutputStream;
+import java.io.File;
 import java.net.InetAddress;
 import java.net.NetworkInterface;
 import java.net.SocketException;
@@ -67,6 +76,8 @@
     private RelativeLayout fragment_supervisory_enter_camera_relative_layout;
     @ViewInject(R.id.fragment_surveillance_bottom_linear_layout)
     private LinearLayout fragment_surveillance_bottom_linear_layout;
+    @ViewInject(R.id.myVideoView)
+    private MjpegView myVideoView;
 
     StartCameraThread startEnterCameraThread = null;
     StartCameraThread startExitCameraThread = null;
@@ -187,6 +198,99 @@
             fragment_supervisory_enter_camera_relative_layout.addView(MainActivity.getInstance().mPreview);
             fragment_supervisory_enter_camera_relative_layout.addView(MainActivity.getInstance().mDraw);
         }
+        Uri vidUri = Uri.parse("http://192.168.1.13:8080/video");
+        //myVideoView.setVideoURI(vidUri);
+        //myVideoView.setVideoPath("http://192.168.1.13:8080/video");
+        //myVideoView.start();
+        if (1!=1) {
+            new Thread() {
+                @Override
+                public void run() {
+                    FSDK.HCamera cameraHandle = new FSDK.HCamera();
+                    boolean opened = false;
+                    int res = FSDK.ActivateLibrary("");
+                    if (res == FSDK.FSDKE_OK) {
+                        FSDK.Initialize();
+
+                        FSDK.FSDK_VIDEOCOMPRESSIONTYPE type = new FSDK.FSDK_VIDEOCOMPRESSIONTYPE();
+                        type.type=FSDK.FSDK_VIDEOCOMPRESSIONTYPE.FSDK_MJPEG;
+                        FSDK.OpenIPVideoCamera(type,"http://192.168.1.13:8080/video",
+                                "username","password",500, cameraHandle);
+                        opened = true;
+                    }
+                    int tracId = 0;
+                    while(true) {
+                        try {
+                            if (opened) {
+                                FSDK.HImage imageHandle = new FSDK.HImage();
+                                int res1 = FSDK.GrabFrame(cameraHandle, imageHandle);
+                                if (res1 == FSDK.FSDKE_OK) {// grab the current frame from the camera
+                                    FSDK.TFaces FacePositions = new FSDK.TFaces();
+                                    int res3 = FSDK.DetectMultipleFaces(imageHandle, FacePositions);
+                                    if(res3 == FSDK.FSDKE_OK) {
+                                        if (FacePositions.faces != null) {
+                                            for (FSDK.TFacePosition fp : FacePositions.faces ) {
+                                                System.out.println("2:"+fp.xc);
+                                                int x1 = (int)(fp.xc - 1.2*fp.w / 2);
+                                                int y1 = (int)(fp.yc - 1.4*fp.w / 2);
+                                                int x2 = (int)(fp.xc + 1.2*fp.w / 2);
+                                                int y2 = (int)(fp.yc + 1.4*fp.w / 2);
+                                                FSDK.HImage img2 = new FSDK.HImage();
+                                                FSDK.CreateEmptyImage(img2);
+                                                FSDK.CopyRect(imageHandle, x1, y1, x2, y2, img2);
+                                                FSDK.SetJpegCompressionQuality(100);
+                                                String fileName = MainActivity.getInstance().getFilesDir()+"/"+System.currentTimeMillis()+".jpg";
+                                                int res4 = FSDK.SaveImageToFile(img2, fileName);
+                                                if (res4 == FSDK.FSDKE_OK) {
+                                                    System.out.println(fileName);
+                                                }
+                                                List bitmapList = new ArrayList();
+                                                for (int i = 0; i < 1; i++) {
+                                                    NativeImg nativeImg = new NativeImg();
+                                                    nativeImg.image = FileUtil.readFile(new File(fileName));
+                                                    nativeImg.size = nativeImg.image.length;
+                                                    SurveillanceQueryItem surveillanceQueryItem = new SurveillanceQueryItem();
+                                                    surveillanceQueryItem.setNativeImg(nativeImg);
+                                                    nativeImg.st_track_id = ++tracId;
+                                                    surveillanceQueryItem.setStTrackId(nativeImg.st_track_id);
+                                                    BitmapFactory.Options options = new BitmapFactory.Options();
+                                                    options.inMutable = true;
+                                                    Bitmap bmp = BitmapFactory.decodeByteArray(nativeImg.image, 0, nativeImg.image.length, options);
+                                                    Canvas canvas1 = new Canvas(bmp);
+
+                                                    surveillanceQueryItem.setBitmap(bmp);
+                                                    surveillanceQueryItem.setWidth("100");
+                                                    surveillanceQueryItem.setHeight("100");
+                                                    surveillanceQueryItem.setRegisterOrCheckIn(CommonVariables.Surveillance.OFFLINE_SURVEILLANCE_ITEM_TYPE);
+                                                    surveillanceQueryItem.setCreateTime(new Date());
+                                                    bitmapList.add(surveillanceQueryItem);
+
+                                                    if (BaseApplication.getInstance().networkAvailable()) {
+                                                        SurveillanceMng.getInstance().addBitmap(bitmapList, nativeImg.image, 0, CommonVariables.Camera.IN+"", nativeImg.image);
+                                                    } else {
+                                                        SurveillanceMng.getInstance().addOfflineBitmap(bitmapList, nativeImg.image, CommonVariables.Camera.IN+"");
+                                                    }
+                                                }
+
+                                            }
+                                        }
+                                    }
+
+                                }
+                            }
+                            Thread.sleep(5);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                /*myVideoView.setSource(MjpegInputStream.read("http://192.168.1.13:8080/video"));
+                myVideoView.setDisplayMode(MjpegView.SIZE_BEST_FIT);
+                myVideoView.showFps(false);
+                */
+                }
+            }.start();
+        }
+        //fragment_supervisory_enter_camera.setVisibility(View.GONE);
         fragment_supervisory_enter_camera.getHolder().addCallback(new SurfaceHolder.Callback() {
             public void surfaceCreated(SurfaceHolder holder) {
                 if (CommonVariables.EMULATOR) {
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java
index bc5dc95..353dec7 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java
@@ -2,7 +2,12 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
 import android.widget.Toast;
+
+import com.bsk.zhangbo.demoforbsk.R;
+import com.lidroid.xutils.view.annotation.event.OnClick;
 
 import cn.com.basic.face.base.BaseApplication;
 import cn.com.basic.face.base.MainActivity;
@@ -30,6 +35,7 @@
 import cn.com.basic.face.util.SharedPreferencesUtils;
 import cn.com.basic.face.service.sync.SyncUpThread;
 import cn.com.basic.face.util.SqliteSqlUtil;
+import cn.com.basic.face.util.ToastUtil;
 
 public class DeviceMng {
     public static DeviceMng instance = new DeviceMng();
@@ -172,7 +178,7 @@
                 }
             }
         } else {
-            Toast.makeText(BaseApplication.getInstance(), "鏁版嵁搴撲腑鎵句笉鍒拌璁惧", Toast.LENGTH_SHORT).show();
+            ToastUtil.show("鏁版嵁搴撲腑鎵句笉鍒拌璁惧");
         }
     }
 
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/InternetAccessThread.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/InternetAccessThread.java
index 84e1c79..afd902b 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/InternetAccessThread.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/InternetAccessThread.java
@@ -1,8 +1,10 @@
 package cn.com.basic.face.service;
 
+import android.app.ActivityManager;
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
+import android.text.format.Formatter;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedReader;
@@ -10,6 +12,7 @@
 import java.io.InputStreamReader;
 import java.net.URL;
 import java.net.URLConnection;
+import java.util.List;
 
 import cn.com.basic.face.base.BaseApplication;
 import cn.com.basic.face.base.MainActivity;
@@ -28,6 +31,25 @@
                 } else {
                     MainActivity.getInstance().setInternetAccessible(CommonVariables.InternetAccess.INTERNET_NOT_ACCESSIBLE);
                 }
+
+
+//                ActivityManager activityManager = (ActivityManager)MainActivity.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
+//                List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfos = activityManager.getRunningAppProcesses();
+//                int size = runningAppProcessInfos.size();
+//
+//                ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
+//
+//                activityManager.getMemoryInfo(memoryInfo);
+//
+//                long availMem = memoryInfo.availMem;
+//
+//                long totalMem = memoryInfo.totalMem;
+//
+//                System.out.println("availMem="+Formatter.formatFileSize(MainActivity.getInstance(), availMem)+",totalMem="+
+//                        Formatter.formatFileSize(MainActivity.getInstance(), totalMem));
+
+
+
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -83,29 +105,30 @@
             } catch (Exception e) {
                 return false;
             }
-            StringBuilder cPlusPlusServerResponse = new StringBuilder();
-            try {
-                URL url = new URL("http://60.205.222.4:8080");
-                URLConnection urlCon = url.openConnection();
-                urlCon.setConnectTimeout(1500);
-                InputStream is = urlCon.getInputStream();
-                BufferedInputStream bis = new BufferedInputStream(is);
-
-                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(bis));
-
-                String line;
-                while ((line = bufferedReader.readLine()) != null) {
-                    cPlusPlusServerResponse.append(line).append('\n');
-                }
-                bufferedReader.close();
-                bis.close();
-                is.close();
-            } catch (Exception e) {
-                return false;
-            }
-            if (javaServerResponse.toString().indexOf("Hello World!") > -1 &&
-                    cPlusPlusServerResponse.indexOf("ip") > -1
-                    ) {
+//            StringBuilder cPlusPlusServerResponse = new StringBuilder();
+//            try {
+//                URL url = new URL("http://60.205.222.4:8080");
+//                URLConnection urlCon = url.openConnection();
+//                urlCon.setConnectTimeout(1500);
+//                InputStream is = urlCon.getInputStream();
+//                BufferedInputStream bis = new BufferedInputStream(is);
+//
+//                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(bis));
+//
+//                String line;
+//                while ((line = bufferedReader.readLine()) != null) {
+//                    cPlusPlusServerResponse.append(line).append('\n');
+//                }
+//                bufferedReader.close();
+//                bis.close();
+//                is.close();
+//            } catch (Exception e) {
+//                return false;
+//            }
+//            if (cPlusPlusServerResponse.indexOf("ip") < 0) {
+//                return false;
+//            }
+            if (javaServerResponse.toString().indexOf("Hello World!") > -1) {
                 return true;
             } else {
                 return false;
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PhoneCallMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PhoneCallMng.java
index 4c1f763..1d63e26 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PhoneCallMng.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/PhoneCallMng.java
@@ -26,7 +26,9 @@
 import cn.com.basic.face.service.sqlite.PhoneCallDao;
 import cn.com.basic.face.util.AppApi;
 import cn.com.basic.face.util.CharacterParser;
+import cn.com.basic.face.util.RtspFaceNative;
 import cn.com.basic.face.util.SqliteSqlUtil;
+import cn.com.basic.face.util.ToastUtil;
 
 public class PhoneCallMng extends BaseMng {
 
@@ -137,17 +139,33 @@
         });
     }
 
-    public void addPhoneCall(CheckInQueryItem visitor, CheckInQueryItem interviewee) {
+    public void addPhoneCall(CheckInQueryItem visitor, CheckInQueryItem interviewee, boolean isMobilePhone) {
         if (visitor == null) {
-            Toast.makeText(MainActivity.getInstance(), "璇峰厛閫夋嫨鏉ヨ浜�", Toast.LENGTH_SHORT).show();
+            ToastUtil.show("璇峰厛閫夋嫨鏉ヨ浜�");
             return;
         }
         if (interviewee == null) {
-            Toast.makeText(MainActivity.getInstance(), "璇峰厛閫夋嫨琚浜�", Toast.LENGTH_SHORT).show();
+            ToastUtil.show("璇峰厛閫夋嫨琚浜�");
             return;
         }
+        if (isMobilePhone) {
+            String mobilePhone = interviewee.getMobilePhone();
+            if (mobilePhone == null || mobilePhone.trim().length() != 11) {
+                ToastUtil.show("鎵嬫満鍙风爜涓嶆纭�");
+                return;
+            }
+            RtspFaceNative.teleCall(mobilePhone);
+        } else {
+            String tel = interviewee.getTel();
+            if (tel == null || tel.trim().length() == 0) {
+                ToastUtil.show("搴ф満涓嶆纭�");
+                return;
+            }
+            RtspFaceNative.teleCall(tel);
+        }
+
         if (BaseApplication.getInstance().networkAvailable()) {
-            Toast.makeText(MainActivity.getInstance(), "宸叉坊鍔犲埌鍛煎彨璁板綍", Toast.LENGTH_SHORT).show();
+            Toast.makeText(MainActivity.getInstance(), "", Toast.LENGTH_SHORT).show();
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.PHONE_CALL_ADD);
             params.addBodyParameter(PhoneCall.FieldNames.date, sdf.format(new Date()));
@@ -163,6 +181,7 @@
         } else {
             PhoneCallDao.getInstance().addPhoneCall(visitor, interviewee);
         }
+        ToastUtil.show("宸叉坊鍔犲埌鍛煎彨璁板綍");
     }
 
 }
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java
index b05aa76..7e6d480 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java
@@ -8,7 +8,7 @@
 	//public final static String BASE_URL = "http://192.168.1.51/face/";
 //	public final static String BASE_URL = "http://192.168.1.51:8333/face/";
 	//public final static String BASE_URL = "http://192.168.1.101:8080/face/";
-	public final static String BASE_URL = "http://192.168.1.36:8080/face/";
+	public final static String BASE_URL = "http://192.168.1.92:8080/face/";
 //	public final static String BASE_URL = "http://192.168.1.51:8333/face/";
 //	public final static String BASE_URL = "http://192.168.1.53:8082/face/";
 
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MD5Encoder.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MD5Encoder.java
new file mode 100644
index 0000000..d277e14
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MD5Encoder.java
@@ -0,0 +1,19 @@
+package cn.com.basic.face.util;
+
+import java.security.MessageDigest;
+
+public class MD5Encoder {
+
+	public static String encode(String string) throws Exception {
+		byte[] hash = MessageDigest.getInstance("MD5").digest(
+				string.getBytes("UTF-8"));
+		StringBuilder hex = new StringBuilder(hash.length * 2);
+		for (byte b : hash) {
+			if ((b & 0xFF) < 0x10) {
+				hex.append("0");
+			}
+			hex.append(Integer.toHexString(b & 0xFF));
+		}
+		return hex.toString();
+	}
+}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MjpegInputStream.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MjpegInputStream.java
new file mode 100644
index 0000000..58a212e
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MjpegInputStream.java
@@ -0,0 +1,82 @@
+package cn.com.basic.face.util;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.Properties;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+public class MjpegInputStream extends DataInputStream {
+    private final byte[] SOI_MARKER = { (byte) 0xFF, (byte) 0xD8 };
+    private final byte[] EOF_MARKER = { (byte) 0xFF, (byte) 0xD9 };
+    private final String CONTENT_LENGTH = "Content-Length";
+    private final static int HEADER_MAX_LENGTH = 100;
+    private final static int FRAME_MAX_LENGTH = 40000 + HEADER_MAX_LENGTH;
+    private int mContentLength = -1;
+
+    public static MjpegInputStream read(String url) {
+        HttpResponse res;
+        DefaultHttpClient httpclient = new DefaultHttpClient();     
+        try {
+            res = httpclient.execute(new HttpGet(URI.create(url)));
+            return new MjpegInputStream(res.getEntity().getContent());              
+        } catch (ClientProtocolException e) {
+        } catch (IOException e) {}
+        return null;
+    }
+
+    public MjpegInputStream(InputStream in) { super(new BufferedInputStream(in, FRAME_MAX_LENGTH)); }
+
+    private int getEndOfSeqeunce(DataInputStream in, byte[] sequence) throws IOException {
+        int seqIndex = 0;
+        byte c;
+        for(int i=0; i < FRAME_MAX_LENGTH; i++) {
+            c = (byte) in.readUnsignedByte();
+            if(c == sequence[seqIndex]) {
+                seqIndex++;
+                if(seqIndex == sequence.length) return i + 1;
+            } else seqIndex = 0;
+        }
+        return -1;
+    }
+
+    private int getStartOfSequence(DataInputStream in, byte[] sequence) throws IOException {
+        int end = getEndOfSeqeunce(in, sequence);
+        return (end < 0) ? (-1) : (end - sequence.length);
+    }
+
+    private int parseContentLength(byte[] headerBytes) throws IOException, NumberFormatException {
+        ByteArrayInputStream headerIn = new ByteArrayInputStream(headerBytes);
+        Properties props = new Properties();
+        props.load(headerIn);
+        return Integer.parseInt(props.getProperty(CONTENT_LENGTH));
+    }   
+
+    public Bitmap readMjpegFrame() throws IOException {
+        mark(FRAME_MAX_LENGTH);
+        int headerLen = getStartOfSequence(this, SOI_MARKER);
+        reset();
+        byte[] header = new byte[headerLen];
+        readFully(header);
+        try {
+            mContentLength = parseContentLength(header);
+        } catch (NumberFormatException nfe) { 
+            mContentLength = getEndOfSeqeunce(this, EOF_MARKER); 
+        }
+        reset();
+        byte[] frameData = new byte[mContentLength];
+        skipBytes(headerLen);
+        readFully(frameData);
+        return BitmapFactory.decodeStream(new ByteArrayInputStream(frameData));
+    }
+}
\ No newline at end of file
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MjpegView.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MjpegView.java
new file mode 100644
index 0000000..650617c
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/MjpegView.java
@@ -0,0 +1,210 @@
+package cn.com.basic.face.util;
+
+import java.io.IOException;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.util.AttributeSet;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+
+public class MjpegView extends SurfaceView implements SurfaceHolder.Callback {
+    public final static int POSITION_UPPER_LEFT  = 9;
+    public final static int POSITION_UPPER_RIGHT = 3;
+    public final static int POSITION_LOWER_LEFT  = 12;
+    public final static int POSITION_LOWER_RIGHT = 6;
+
+    public final static int SIZE_STANDARD   = 1; 
+    public final static int SIZE_BEST_FIT   = 4;
+    public final static int SIZE_FULLSCREEN = 8;
+
+    private MjpegViewThread thread;
+    private MjpegInputStream mIn = null;    
+    private boolean showFps = false;
+    private boolean mRun = false;
+    private boolean surfaceDone = false;    
+    private Paint overlayPaint;
+    private int overlayTextColor;
+    private int overlayBackgroundColor;
+    private int ovlPos;
+    private int dispWidth;
+    private int dispHeight;
+    private int displayMode;
+
+    public class MjpegViewThread extends Thread {
+        private SurfaceHolder mSurfaceHolder;
+        private int frameCounter = 0;
+        private long start;
+        private Bitmap ovl;
+
+        public MjpegViewThread(SurfaceHolder surfaceHolder, Context context) { mSurfaceHolder = surfaceHolder; }
+
+        private Rect destRect(int bmw, int bmh) {
+            int tempx;
+            int tempy;
+            if (displayMode == MjpegView.SIZE_STANDARD) {
+                tempx = (dispWidth / 2) - (bmw / 2);
+                tempy = (dispHeight / 2) - (bmh / 2);
+                return new Rect(tempx, tempy, bmw + tempx, bmh + tempy);
+            }
+            if (displayMode == MjpegView.SIZE_BEST_FIT) {
+                float bmasp = (float) bmw / (float) bmh;
+                bmw = dispWidth;
+                bmh = (int) (dispWidth / bmasp);
+                if (bmh > dispHeight) {
+                    bmh = dispHeight;
+                    bmw = (int) (dispHeight * bmasp);
+                }
+                tempx = (dispWidth / 2) - (bmw / 2);
+                tempy = (dispHeight / 2) - (bmh / 2);
+                return new Rect(tempx, tempy, bmw + tempx, bmh + tempy);
+            }
+            if (displayMode == MjpegView.SIZE_FULLSCREEN) return new Rect(0, 0, dispWidth, dispHeight);
+            return null;
+        }
+
+        public void setSurfaceSize(int width, int height) {
+            synchronized(mSurfaceHolder) {
+                dispWidth = width;
+                dispHeight = height;
+            }
+        }
+
+        private Bitmap makeFpsOverlay(Paint p, String text) {
+            Rect b = new Rect();
+            p.getTextBounds(text, 0, text.length(), b);
+            int bwidth  = b.width()+2;
+            int bheight = b.height()+2;
+            Bitmap bm = Bitmap.createBitmap(bwidth, bheight, Bitmap.Config.ARGB_8888);
+            Canvas c = new Canvas(bm);
+            p.setColor(overlayBackgroundColor);
+            c.drawRect(0, 0, bwidth, bheight, p);
+            p.setColor(overlayTextColor);
+            c.drawText(text, -b.left+1, (bheight/2)-((p.ascent()+p.descent())/2)+1, p);
+            return bm;           
+        }
+
+        public void run() {
+            start = System.currentTimeMillis();
+            PorterDuffXfermode mode = new PorterDuffXfermode(PorterDuff.Mode.DST_OVER);
+            Bitmap bm;
+            int width;
+            int height;
+            Rect destRect;
+            Canvas c = null;
+            Paint p = new Paint();
+            String fps = "";
+            while (mRun) {
+                if(surfaceDone) {
+                    try {
+                        c = mSurfaceHolder.lockCanvas();
+                        synchronized (mSurfaceHolder) {
+                            try {
+                                bm = mIn.readMjpegFrame();
+                                destRect = destRect(bm.getWidth(),bm.getHeight());
+                                c.drawColor(Color.BLACK);
+                                c.drawBitmap(bm, null, destRect, p);
+                                if(showFps) {
+                                    p.setXfermode(mode);
+                                    if(ovl != null) {
+                                        height = ((ovlPos & 1) == 1) ? destRect.top : destRect.bottom-ovl.getHeight();
+                                        width  = ((ovlPos & 8) == 8) ? destRect.left : destRect.right -ovl.getWidth();
+                                        c.drawBitmap(ovl, width, height, null);
+                                    }
+                                    p.setXfermode(null);
+                                    frameCounter++;
+                                    if((System.currentTimeMillis() - start) >= 1000) {
+                                        fps = String.valueOf(frameCounter)+"fps";
+                                        frameCounter = 0; 
+                                        start = System.currentTimeMillis();
+                                        ovl = makeFpsOverlay(overlayPaint, fps);
+                                    }
+                                }
+                            } catch (IOException e) {}
+                        }
+                    } finally { if (c != null) mSurfaceHolder.unlockCanvasAndPost(c); }
+                }
+            }
+        }
+    }
+
+    private void init(Context context) {
+        SurfaceHolder holder = getHolder();
+        holder.addCallback(this);
+        thread = new MjpegViewThread(holder, context);
+        setFocusable(true);
+        overlayPaint = new Paint();
+        overlayPaint.setTextAlign(Paint.Align.LEFT);
+        overlayPaint.setTextSize(12);
+        overlayPaint.setTypeface(Typeface.DEFAULT);
+        overlayTextColor = Color.WHITE;
+        overlayBackgroundColor = Color.BLACK;
+        ovlPos = MjpegView.POSITION_LOWER_RIGHT;
+        displayMode = MjpegView.SIZE_STANDARD;
+        dispWidth = getWidth();
+        dispHeight = getHeight();
+    }
+
+    public void startPlayback() { 
+        if(mIn != null) {
+            mRun = true;
+            thread.start();         
+        }
+    }
+
+    public void stopPlayback() { 
+        mRun = false;
+        boolean retry = true;
+        while(retry) {
+            try {
+                thread.join();
+                retry = false;
+            } catch (InterruptedException e) {}
+        }
+    }
+
+    public MjpegView(Context context, AttributeSet attrs) { super(context, attrs); init(context); }
+    public void surfaceChanged(SurfaceHolder holder, int f, int w, int h) { thread.setSurfaceSize(w, h); }
+
+    public void surfaceDestroyed(SurfaceHolder holder) { 
+        surfaceDone = false; 
+        stopPlayback(); 
+    }
+
+    public MjpegView(Context context) { 
+        super(context); 
+        init(context); 
+        }    
+    public void surfaceCreated(SurfaceHolder holder) { 
+        surfaceDone = true; 
+        }
+    public void showFps(boolean b) { 
+        showFps = b; 
+        }
+    public void setSource(MjpegInputStream source) { 
+        mIn = source; 
+        startPlayback();
+        }
+    public void setOverlayPaint(Paint p) { 
+        overlayPaint = p; 
+        }
+    public void setOverlayTextColor(int c) { 
+        overlayTextColor = c; 
+        }
+    public void setOverlayBackgroundColor(int c) { 
+        overlayBackgroundColor = c; 
+        }
+    public void setOverlayPosition(int p) { 
+        ovlPos = p; 
+        }
+    public void setDisplayMode(int s) { 
+        displayMode = s; 
+        }
+}
\ No newline at end of file
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java
index 71c0940..32791e7 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java
@@ -44,7 +44,7 @@
     }
 
     public void addItem(SurveillanceQueryItem returnItem, SurveillanceQueryItem requestItem, String cameraInOrOut) {
-        if (!CommonVariables.FACE_SERVER) {
+        if (!CommonVariables.FACE_SERVER && !CommonVariables.EMULATOR) {
             RtspFaceNative.setFaceLabel(Integer.parseInt(cameraInOrOut), requestItem.getStTrackId(), returnItem.getVisitorType()==null?"":returnItem.getVisitorType().substring(0,
                     returnItem.getVisitorType().length() > 3 ? 3 : returnItem.getVisitorType().length()
                     ));
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/ToastUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/ToastUtil.java
new file mode 100644
index 0000000..3fbd2b1
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/ToastUtil.java
@@ -0,0 +1,18 @@
+package cn.com.basic.face.util;
+
+import android.widget.Toast;
+
+import cn.com.basic.face.base.MainActivity;
+
+public class ToastUtil {
+
+    public static void show(final String message) {
+        MainActivity.getInstance().runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(MainActivity.getInstance(), message, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/LocalCacheUtils.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/LocalCacheUtils.java
new file mode 100644
index 0000000..75d9159
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/LocalCacheUtils.java
@@ -0,0 +1,71 @@
+package cn.com.basic.face.util.bitmap;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import cn.com.basic.face.util.MD5Encoder;
+
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.CompressFormat;
+import android.graphics.BitmapFactory;
+import android.os.Environment;
+
+/**
+ * 鏈湴缂撳瓨
+ * 
+ * @author Kevin
+ * 
+ */
+public class LocalCacheUtils {
+
+	public static final String CACHE_PATH = Environment
+			.getExternalStorageDirectory().getAbsolutePath() + "/zhbj_cache_52";
+
+	/**
+	 * 浠庢湰鍦皊dcard璇诲浘鐗�
+	 */
+	public Bitmap getBitmapFromLocal(String url) {
+		try {
+			String fileName = MD5Encoder.encode(url);
+			File file = new File(CACHE_PATH, fileName);
+
+			if (file.exists()) {
+				Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(
+						file));
+				return bitmap;
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		return null;
+	}
+
+	/**
+	 * 鍚憇dcard鍐欏浘鐗�
+	 * 
+	 * @param url
+	 * @param bitmap
+	 */
+	public void setBitmapToLocal(String url, Bitmap bitmap) {
+		try {
+			String fileName = MD5Encoder.encode(url);
+
+			File file = new File(CACHE_PATH, fileName);
+
+			File parentFile = file.getParentFile();
+			if (!parentFile.exists()) {// 濡傛灉鏂囦欢澶逛笉瀛樺湪, 鍒涘缓鏂囦欢澶�
+				parentFile.mkdirs();
+			}
+
+			// 灏嗗浘鐗囦繚瀛樺湪鏈湴
+			bitmap.compress(CompressFormat.JPEG, 100,
+					new FileOutputStream(file));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/MemoryCacheUtils.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/MemoryCacheUtils.java
new file mode 100644
index 0000000..6ba9952
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/MemoryCacheUtils.java
@@ -0,0 +1,57 @@
+package cn.com.basic.face.util.bitmap;
+
+import android.graphics.Bitmap;
+import android.support.v4.util.LruCache;
+
+import java.lang.ref.SoftReference;
+
+/**
+ * 鍐呭瓨缂撳瓨
+ * 
+ * @author Kevin
+ * 
+ */
+public class MemoryCacheUtils {
+
+//	 private HashMap<String, SoftReference<Bitmap>> mMemoryCache = new
+//	 HashMap<String, SoftReference<Bitmap>>();
+	private LruCache<String, Bitmap> mMemoryCache;
+
+	public MemoryCacheUtils() {
+		long maxMemory = Runtime.getRuntime().maxMemory() / 8;// 妯℃嫙鍣ㄩ粯璁ゆ槸16M
+		mMemoryCache = new LruCache<String, Bitmap>((int) maxMemory) {
+			@Override
+			protected int sizeOf(String key, Bitmap value) {
+				int byteCount = value.getRowBytes() * value.getHeight();// 鑾峰彇鍥剧墖鍗犵敤鍐呭瓨澶у皬
+				return byteCount;
+			}
+		};
+	}
+
+	/**
+	 * 浠庡唴瀛樿
+	 * 
+	 * @param url
+	 */
+	public Bitmap getBitmapFromMemory(String url) {
+		// SoftReference<Bitmap> softReference = mMemoryCache.get(url);
+		// if (softReference != null) {
+		// Bitmap bitmap = softReference.get();
+		// return bitmap;
+		// }
+		return mMemoryCache.get(url);
+	}
+
+	/**
+	 * 鍐欏唴瀛�
+	 * 
+	 * @param url
+	 * @param bitmap
+	 */
+	public void setBitmapToMemory(String url, Bitmap bitmap) {
+//		 SoftReference<Bitmap> softReference = new
+//		 SoftReference<Bitmap>(bitmap);
+//		 mMemoryCache.put(url, softReference);
+		mMemoryCache.put(url, bitmap);
+	}
+}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/MyBitmapUtils.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/MyBitmapUtils.java
new file mode 100644
index 0000000..f4aa926
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/MyBitmapUtils.java
@@ -0,0 +1,51 @@
+package cn.com.basic.face.util.bitmap;
+
+import android.graphics.Bitmap;
+import android.widget.ImageView;
+
+//import com.itheima.zhbj52.R;
+
+/**
+ * 鑷畾涔夊浘鐗囧姞杞藉伐鍏�
+ * 
+ * @author Kevin
+ * 
+ */
+public class MyBitmapUtils {
+
+	NetCacheUtils mNetCacheUtils;
+	LocalCacheUtils mLocalCacheUtils;
+	MemoryCacheUtils mMemoryCacheUtils;
+
+	public MyBitmapUtils() {
+		mMemoryCacheUtils = new MemoryCacheUtils();
+		mLocalCacheUtils = new LocalCacheUtils();
+		mNetCacheUtils = new NetCacheUtils(mLocalCacheUtils, mMemoryCacheUtils);
+	}
+
+	public void display(ImageView ivPic, String url) {
+		//ivPic.setImageResource(R.drawable.news_pic_default);// 璁剧疆榛樿鍔犺浇鍥剧墖
+
+		Bitmap bitmap = null;
+		// 浠庡唴瀛樿
+		bitmap = mMemoryCacheUtils.getBitmapFromMemory(url);
+		if (bitmap != null) {
+			ivPic.setImageBitmap(bitmap);
+			System.out.println("浠庡唴瀛樿鍙栧浘鐗囧暒...");
+			return;
+		}
+
+		// 浠庢湰鍦拌
+		bitmap = mLocalCacheUtils.getBitmapFromLocal(url);
+		if (bitmap != null) {
+			ivPic.setImageBitmap(bitmap);
+			System.out.println("浠庢湰鍦拌鍙栧浘鐗囧暒...");
+			mMemoryCacheUtils.setBitmapToMemory(url, bitmap);// 灏嗗浘鐗囦繚瀛樺湪鍐呭瓨
+			return;
+		}
+
+		// 浠庣綉缁滆
+		mNetCacheUtils.getBitmapFromNet(ivPic, url);
+	}
+
+}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/NetCacheUtils.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/NetCacheUtils.java
new file mode 100644
index 0000000..f3299bf
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/bitmap/NetCacheUtils.java
@@ -0,0 +1,131 @@
+package cn.com.basic.face.util.bitmap;
+
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.AsyncTask;
+import android.widget.ImageView;
+
+/**
+ * 缃戠粶缂撳瓨
+ * 
+ * @author Kevin
+ * 
+ */
+public class NetCacheUtils {
+
+	private LocalCacheUtils mLocalCacheUtils;
+	private MemoryCacheUtils mMemoryCacheUtils;
+
+	public NetCacheUtils(LocalCacheUtils localCacheUtils,
+			MemoryCacheUtils memoryCacheUtils) {
+		mLocalCacheUtils = localCacheUtils;
+		mMemoryCacheUtils = memoryCacheUtils;
+	}
+
+	/**
+	 * 浠庣綉缁滀笅杞藉浘鐗�
+	 * 
+	 * @param ivPic
+	 * @param url
+	 */
+	public void getBitmapFromNet(ImageView ivPic, String url) {
+		new BitmapTask().execute(ivPic, url);// 鍚姩AsyncTask,
+												// 鍙傛暟浼氬湪doInbackground涓幏鍙�
+	}
+
+	/**
+	 * Handler鍜岀嚎绋嬫睜鐨勫皝瑁�
+	 * 
+	 * 绗竴涓硾鍨�: 鍙傛暟绫诲瀷 绗簩涓硾鍨�: 鏇存柊杩涘害鐨勬硾鍨�, 绗笁涓硾鍨嬫槸onPostExecute鐨勮繑鍥炵粨鏋�
+	 * 
+	 * @author Kevin
+	 * 
+	 */
+	class BitmapTask extends AsyncTask<Object, Void, Bitmap> {
+
+		private ImageView ivPic;
+		private String url;
+
+		/**
+		 * 鍚庡彴鑰楁椂鏂规硶鍦ㄦ鎵ц, 瀛愮嚎绋�
+		 */
+		@Override
+		protected Bitmap doInBackground(Object... params) {
+			ivPic = (ImageView) params[0];
+			url = (String) params[1];
+
+			ivPic.setTag(url);// 灏唘rl鍜宨mageview缁戝畾
+
+			return downloadBitmap(url);
+		}
+
+		/**
+		 * 鏇存柊杩涘害, 涓荤嚎绋�
+		 */
+		@Override
+		protected void onProgressUpdate(Void... values) {
+			super.onProgressUpdate(values);
+		}
+
+		/**
+		 * 鑰楁椂鏂规硶缁撴潫鍚�,鎵ц璇ユ柟娉�, 涓荤嚎绋�
+		 */
+		@Override
+		protected void onPostExecute(Bitmap result) {
+			if (result != null) {
+				String bindUrl = (String) ivPic.getTag();
+
+				if (url.equals(bindUrl)) {// 纭繚鍥剧墖璁惧畾缁欎簡姝g‘鐨刬mageview
+					ivPic.setImageBitmap(result);
+					mLocalCacheUtils.setBitmapToLocal(url, result);// 灏嗗浘鐗囦繚瀛樺湪鏈湴
+					mMemoryCacheUtils.setBitmapToMemory(url, result);// 灏嗗浘鐗囦繚瀛樺湪鍐呭瓨
+					System.out.println("浠庣綉缁滅紦瀛樿鍙栧浘鐗囧暒...");
+				}
+			}
+		}
+	}
+
+	/**
+	 * 涓嬭浇鍥剧墖
+	 * 
+	 * @param url
+	 * @return
+	 */
+	private Bitmap downloadBitmap(String url) {
+
+		HttpURLConnection conn = null;
+		try {
+			conn = (HttpURLConnection) new URL(url).openConnection();
+
+			conn.setConnectTimeout(5000);
+			conn.setReadTimeout(5000);
+			conn.setRequestMethod("GET");
+			conn.connect();
+
+			int responseCode = conn.getResponseCode();
+			if (responseCode == 200) {
+				InputStream inputStream = conn.getInputStream();
+				
+				//鍥剧墖鍘嬬缉澶勭悊
+				BitmapFactory.Options option = new BitmapFactory.Options();
+				option.inSampleSize = 2;//瀹介珮閮藉帇缂╀负鍘熸潵鐨勪簩鍒嗕箣涓�, 姝ゅ弬鏁伴渶瑕佹牴鎹浘鐗囪灞曠ず鐨勫ぇ灏忔潵纭畾
+				option.inPreferredConfig = Bitmap.Config.RGB_565;//璁剧疆鍥剧墖鏍煎紡
+				
+				Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, option);
+				return bitmap;
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			conn.disconnect();
+		}
+
+		return null;
+	}
+
+}
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/checkin/CheckInRightIntervieweeCell.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/checkin/CheckInRightIntervieweeCell.java
index ac58a71..ff82c75 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/checkin/CheckInRightIntervieweeCell.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/widget/checkin/CheckInRightIntervieweeCell.java
@@ -90,12 +90,12 @@
 
     @OnClick(R.id.fragment_check_in_right_interviewee_cell_call_tel)
     public void fragment_check_in_right_interviewee_cell_call_tel_click(View view) {
-        PhoneCallMng.getInstance().addPhoneCall(CheckInFragment.getInstance().getFragment_check_in_right_visitor_cell().getVisitor(), item);
+        PhoneCallMng.getInstance().addPhoneCall(CheckInFragment.getInstance().getFragment_check_in_right_visitor_cell().getVisitor(), item, false);
     }
 
     @OnClick(R.id.fragment_check_in_right_interviewee_cell_call_mobile)
     public void fragment_check_in_right_interviewee_cell_call_mobile_click(View view) {
-        PhoneCallMng.getInstance().addPhoneCall(CheckInFragment.getInstance().getFragment_check_in_right_visitor_cell().getVisitor(), item);
+        PhoneCallMng.getInstance().addPhoneCall(CheckInFragment.getInstance().getFragment_check_in_right_visitor_cell().getVisitor(), item, true);
     }
 
     public void resetForm() {

--
Gitblit v1.8.0