xuxiuxi
2017-06-20 5838c9545e775d9f0586e2b654ed538d9a85ee51


git-svn-id: http://192.168.1.226/svn/proxy@652 454eff88-639b-444f-9e54-f578c98de674
4个文件已添加
13个文件已修改
626 ■■■■ 已修改文件
VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/query/item/SurveillanceQueryItem.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/CaffeMobile.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/PostData.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UploadTest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/Uploader.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/res/layout/activity_main.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_register_cell.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml
@@ -17,6 +17,8 @@
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
    <application
        android:name="cn.com.basic.face.base.BaseApplication"
        android:allowBackup="true"
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/adapter/SurveillanceFragment.java
@@ -40,14 +40,18 @@
        @Override
        public void onBindRecycleViewHolder(EasyRecyclerViewHolder viewHolder, int position) {
            switch (((SurveillanceQueryItem)getList().get(position)).getRegisterOrCheckIn()){
                case Constant.Surveillance.VISIT_REGISTER_ITEM_TYPE:
                    RegisterCellViewFillData(viewHolder,position);
                    break;
                case Constant.Surveillance.VISIT_CHECK_IN_ITEM_TYPE:
                    checkInCellViewFillData(viewHolder,position);
                    break;
            Object obj = getList().get(position);
            if (obj instanceof SurveillanceQueryItem) {
                switch (((SurveillanceQueryItem)getList().get(position)).getRegisterOrCheckIn()){
                    case Constant.Surveillance.VISIT_REGISTER_ITEM_TYPE:
                        RegisterCellViewFillData(viewHolder,position);
                        break;
                    case Constant.Surveillance.VISIT_CHECK_IN_ITEM_TYPE:
                        checkInCellViewFillData(viewHolder,position);
                        break;
                }
            }
        }
        @Override
@@ -86,8 +90,10 @@
                    fragment_home_bottom_register_cell_photo.setImageURI(Uri.parse(AppApi.IMAGE_URL_BASE +item.getImagePath()));
                } else {
                    if (item.getBitmap() != null) {
                        fragment_home_bottom_register_cell_photo.setImageBitmap(BitmapUtil.getRoundedCornerBitmap(item.getBitmap(),
                                (int)MainActivity.getInstance().getResources().getDimension(R.dimen.w10dp)));
                        //fragment_home_bottom_register_cell_photo.setImageResource(R.drawable.u45);
                        fragment_home_bottom_register_cell_photo.setImageBitmap(item.getBitmap());
//                        fragment_home_bottom_register_cell_photo.setImageBitmap(BitmapUtil.getRoundedCornerBitmap(item.getBitmap(),
//                                (int)MainActivity.getInstance().getResources().getDimension(R.dimen.w10dp)));
                    } else {
                        fragment_home_bottom_register_cell_photo.setImageResource(R.drawable.u45);
                    }
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java
@@ -13,6 +13,7 @@
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
@@ -72,7 +73,8 @@
        mTabLayout.setTabMode(TabLayout.MODE_FIXED);
        for (int i = 0; i < mTabLayout.getTabCount(); i++) {
            TabLayout.Tab tab = mTabLayout.getTabAt(i);
            tab.setCustomView(myFragmentPagerAdapter.getTabView(i));
            LinearLayout view = (LinearLayout)myFragmentPagerAdapter.getTabView(i);
            tab.setCustomView(view);
            if (i == 0) {
                tab.getCustomView().setSelected(true);
            }
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/query/item/SurveillanceQueryItem.java
@@ -201,11 +201,12 @@
    }
    public String getBase64Image() {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
        byte[] imageBytes = byteArrayOutputStream.toByteArray();
        String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
        return encodedImage;
//        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
//        byte[] imageBytes = byteArrayOutputStream.toByteArray();
//        String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
//        return encodedImage;
        return "";
    }
    public void setBase64Image(String base64Image) {
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java
@@ -6,6 +6,7 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Base64;
@@ -18,6 +19,8 @@
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.bsk.zhangbo.demoforbsk.R;
import cn.com.basic.face.adapter.SurveillanceFragment;
@@ -26,6 +29,7 @@
import cn.com.basic.face.base.PictureTaker;
import cn.com.basic.face.dialog.SurveillancePhotoDialog;
import cn.com.basic.face.discern.common.CommonVariables;
import cn.com.basic.face.discern.common.ResultBean;
import cn.com.basic.face.discern.entity.Register;
import cn.com.basic.face.discern.query.item.CheckInQueryItem;
import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
@@ -40,6 +44,8 @@
import cn.com.basic.face.util.AppApi;
import cn.com.basic.face.dialog.DateSelectDialog;
import cn.com.basic.face.dialog.CountryDialog;
import cn.com.basic.face.util.PostData;
import cn.com.basic.face.util.Uploader;
import cn.com.basic.face.widget.register.RegisterRightFieldLabelView;
import cn.com.basic.face.widget.register.RegisterRightFieldTextView;
import cn.com.basic.face.dialog.SelectDialog;
@@ -134,16 +140,12 @@
    @OnClick(R.id.fragment_register_save)
    public void fragment_register_save_click(View v) {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        RequestParams params = new RequestParams();
        DisplayMetrics metrics = getActivity().getResources().getDisplayMetrics();
        int h1 = fragment_register_surveillance_photo.getHeight();
        int h2 = fragment_register_upload_custom_photo.getHeight();
        int h3 = fragment_register_id_card_photo.getHeight();
        DisplayMetrics displayMetrics = BaseApplication.getInstance().getResources().getDisplayMetrics();
        float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
        float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
        String name = fragment_register_name.getValue();
        if (name.trim().length() <= 0) {
@@ -205,15 +207,18 @@
            fragment_register_visitor_class.callOnClick();
            return;
        }
        params.addBodyParameter(Register.FieldNames.username, name);
        params.addBodyParameter(Register.FieldNames.mobilePhone, phone);
        params.addBodyParameter(Register.FieldNames.genderId, DictionaryMng.getInstance().getId(gender));
        params.addBodyParameter(Register.FieldNames.identityTypeId, DictionaryMng.getInstance().getId(id_class));
        params.addBodyParameter(Register.FieldNames.countryId, DictionaryMng.getInstance().getId(country));
        params.addBodyParameter(Register.FieldNames.visitorTypeId, DictionaryMng.getInstance().getId(visitor_class));
        params.addBodyParameter(Register.FieldNames.identifyNum, id_num);
        params.addBodyParameter(Register.FieldNames.companyId, company);
        params.addBodyParameter(Register.FieldNames.birthday, birthday);
        final PostData pd = new PostData();
        pd.addValue(Register.FieldNames.username, name);
        pd.addValue(Register.FieldNames.mobilePhone, phone);
        pd.addValue(Register.FieldNames.genderId, DictionaryMng.getInstance().getId(gender));
        pd.addValue(Register.FieldNames.identityTypeId, DictionaryMng.getInstance().getId(id_class));
        pd.addValue(Register.FieldNames.countryId, DictionaryMng.getInstance().getId(country));
        pd.addValue(Register.FieldNames.visitorTypeId, DictionaryMng.getInstance().getId(visitor_class));
        pd.addValue(Register.FieldNames.identifyNum, id_num);
        pd.addValue(Register.FieldNames.companyId, company);
        pd.addValue(Register.FieldNames.birthday, birthday);
        if (surveillanceQueryItem_selectPhoto != null) {
            params.addBodyParameter("width", surveillanceQueryItem_selectPhoto.getWidth());
@@ -221,47 +226,63 @@
            fragment_register_surveillance_photo_img = surveillanceQueryItem_selectPhoto.getBitmap();
            NativeImg nativeImg = surveillanceQueryItem_selectPhoto.getNativeImg();
            String str = Base64.encodeToString(nativeImg.image, 0, nativeImg.size, Base64.DEFAULT);
            params.addBodyParameter("base64Image", str);
        }
        if (surveillanceQueryItem_uploadPhoto != null) {
//            params.addBodyParameter("width", surveillanceQueryItem_uploadPhoto.getWidth());
//            params.addBodyParameter("height", surveillanceQueryItem_uploadPhoto.getHeight());
//            fragment_register_surveillance_photo_img = surveillanceQueryItem_uploadPhoto.getBitmap();
//
//            NativeImg nativeImg = surveillanceQueryItem_uploadPhoto.getNativeImg();
//            String str = Base64.encodeToString(nativeImg.image, 0, nativeImg.size, Base64.DEFAULT);
//
//            params.addBodyParameter("base64Image", str);
            byte[] imageBytes = new byte[nativeImg.size];
            for (int i = 0; i < nativeImg.size; i++) {
                imageBytes[i] = nativeImg.image[i];
            }
            pd.addData("rawSurveillancePhoto", "application/octet-stream", imageBytes);
        }
        if (fragment_register_surveillance_photo_img != null) {
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            fragment_register_surveillance_photo_img.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
            byte[] imageBytes = byteArrayOutputStream.toByteArray();
            String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
            params.addBodyParameter(Register.FieldNames.surveillancePhoto, encodedImage);
            pd.addData(Register.FieldNames.surveillancePhoto, "application/octet-stream", imageBytes);
        }
        if (fragment_register_upload_custom_photo_img != null) {
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            fragment_register_upload_custom_photo_img.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
            byte[] imageBytes = byteArrayOutputStream.toByteArray();
            String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
            params.addBodyParameter(Register.FieldNames.uploadCustomPhoto, encodedImage);
            pd.addData(Register.FieldNames.uploadCustomPhoto, "application/octet-stream", imageBytes);
        }
        if (fragment_register_id_card_photo_img != null) {
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            fragment_register_id_card_photo_img.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
            byte[] imageBytes = byteArrayOutputStream.toByteArray();
            String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
            params.addBodyParameter(Register.FieldNames.idCardPhoto, encodedImage);
            pd.addData(Register.FieldNames.idCardPhoto, "application/octet-stream", imageBytes);
        }
        RegisterMng.getInstance().add(params);
        class ConnectionTask extends AsyncTask<String, Void, String> {
            private String json = "";
            @Override
            protected String doInBackground(String... urls) {
                try {
                    Uploader uploader = new Uploader("", AppApi.BASE_URL + AppApi.REGISTER_ADD);
                    json = uploader.upload("", pd);
                    return json;
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
            @Override
            protected void onPostExecute(String result) {
                try {
                    Toast.makeText(BaseApplication.getInstance(),"添加成功", Toast.LENGTH_SHORT).show();
                    RegisterFragment.getInstance().resetForm();
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
        }
        ConnectionTask task = new ConnectionTask();
        String[] params1 = new String[2];
        task.execute(params1);
    }
    public void set_fragment_register_surveillance_photo(SurveillanceQueryItem item) {
@@ -305,23 +326,16 @@
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);
                fragment_register_upload_custom_photo.setImageBitmap(bitmap);
                //fragment_register_upload_custom_photo_img = bitmap;
                fragment_register_upload_custom_photo_placeholder_image.setVisibility(View.INVISIBLE);
                fragment_register_upload_custom_photo_placeholder_text_view.setVisibility(View.INVISIBLE);
                List<SurveillanceQueryItem> bitmapList = new ArrayList<>();
                SurveillanceQueryItem item = new SurveillanceQueryItem();
//                item.setBitmap(bitmap);
                item.setWidth(bitmap.getWidth()+"");
                item.setHeight(bitmap.getHeight()+"");
                item.setLocalUri(uri);
//                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
//                byte[] imageBytes = byteArrayOutputStream.toByteArray();
//                String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
//                item.setBase64Image(encodedImage);
                setSurveillanceQueryItem_selectPhoto(item);
                bitmapList.add(item);
                bitmapList.add(item);
@@ -505,11 +519,6 @@
    @OnClick(R.id.fragment_register_id_card_photo)
    public void fragment_register_id_card_photo_click(View view) {
//        Intent takePicture = new Intent(MainActivity.getInstance(), PictureTaker.class);
//        startActivityForResult(takePicture, fragment_register_id_card_photo_);
//        Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//        startActivityForResult(takePicture, fragment_register_id_card_photo_);
        Intent intent = new Intent();
        intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
        idCardImageCaptureFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg");
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/SurveillanceFragment.java
@@ -4,8 +4,10 @@
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.text.format.Formatter;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
@@ -32,12 +34,13 @@
import com.lidroid.xutils.view.annotation.event.OnClick;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.*;
public class SurveillanceFragment extends BaseFragment {
@@ -90,13 +93,41 @@
            System.loadLibrary("protoc");
            System.loadLibrary("rtspface");
            RtspFaceNative.init();
//            RtspFaceNative.setLocalIP("192.168.1.10");
//            RtspFaceNative.setLocalIP("192.168.1.106");//自己手机ip
//            RtspFaceNative.setLocalIP("192.168.1.203");
//            RtspFaceNative.setLocalIP("192.168.1.205");
            WifiManager wm = (WifiManager) MainActivity.getInstance().getSystemService(Context.WIFI_SERVICE);
            String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
            RtspFaceNative.setLocalIP(ip);
            String ipAddress = null;
            try {
                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()) {
                            ipAddress = inetAddress.getHostAddress().toString();
                        }
                    }
                }
            } catch (SocketException ex) {}
            try{
                Process su = Runtime.getRuntime().exec("su");
                DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
                //outputStream.writeBytes("busybox ifconfig wlan0 down\n");
                //outputStream.flush();
                //Thread.sleep(5000);
                outputStream.writeBytes("busybox ifconfig wlan0 hw ether  f4:8b:32:62:4f:89\n");
                outputStream.flush();
                outputStream.writeBytes("exit\n");
                outputStream.flush();
                su.waitFor();
            }catch(Exception e){
                e.printStackTrace();
            }
//            outputStream.writeBytes("busybox ifconfig wlan0 hw ether  00:e0:2c:31:1a:ba\n");
            RtspFaceNative.setLocalIP("192.168.1.53");
        }
    }
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DeviceMng.java
@@ -62,6 +62,7 @@
//                return;
//            }
            RequestParams params = new RequestParams(AppApi.BASE_URL + AppApi.Query.DEVICE_QUERY);
            params.addBodyParameter(Device.FieldNames.sn, authorationId);
            params.addBodyParameter(Device.FieldNames.type, CommonVariables.DeviceType.ANDROID_DEVICE);
            x.http().post(params, new BaseCommonCallBack() {
@@ -188,7 +189,9 @@
//            port = camera1.getString("fragment_device_right_camera1_port", "");
//        }
        return "rtsp://"+username+":"+password+"@"+ip+":"+port+"/h264/ch1/sub/av_stream";
//        return "rtsp://"+username+":"+password+"@"+ip+":"+port+"/h264/ch1/sub/av_stream";
        return "rtsp://admin:a1234567@192.168.1.68:554/h264/ch1/sub/av_stream";
    }
    public String getCamera2Address() {
@@ -211,7 +214,8 @@
//            port = camera1.getString("fragment_device_right_camera1_port", "");
//        }
        return "rtsp://"+username+":"+password+"@"+ip+":"+port+"/h264/ch1/sub/av_stream";
        //return "rtsp://"+username+":"+password+"@"+ip+":"+port+"/h264/ch1/sub/av_stream";
        return "rtsp://Admin:1234@192.168.1.22/h264_2";
    }
}
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java
@@ -23,23 +23,6 @@
    }
    public void add(RequestParams params) {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        try {
            params.setUri(AppApi.BASE_URL +AppApi.REGISTER_ADD);
            x.http().post(params, new BaseCommonCallBack() {
                @Override
                public void success() {
                    Toast.makeText(BaseApplication.getInstance(),"添加成功", Toast.LENGTH_SHORT).show();
                    RegisterFragment.getInstance().resetForm();
                }
            });
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
@@ -1,10 +1,15 @@
package cn.com.basic.face.service;
import android.os.AsyncTask;
import android.util.Base64;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
@@ -15,10 +20,13 @@
import cn.com.basic.face.base.MainActivity;
import cn.com.basic.face.discern.common.BaseCommonCallBack;
import cn.com.basic.face.discern.common.CommonVariables;
import cn.com.basic.face.discern.common.ResultBean;
import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
import cn.com.basic.face.fragment.SurveillanceFragment;
import cn.com.basic.face.util.AppApi;
import cn.com.basic.face.util.Constant;
import cn.com.basic.face.util.PostData;
import cn.com.basic.face.util.Uploader;
public class SurveillanceMng {
@@ -58,8 +66,8 @@
            if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE) {
                Date now = new Date();
                Date createTime = item.getCreateTime();
                long secs = (now.getTime() - createTime.getTime()) / 1000 ;
                if (secs*1.0 / 60*5 >= 1) {
                double minutes = (now.getTime() - createTime.getTime())*1.0 / 1000 / 60;
                if (minutes >= 5) {
                    continue;
                }
                newPrevList.add(item);
@@ -68,75 +76,105 @@
        return newPrevList;
    }
    public void addBitmap(final List<SurveillanceQueryItem> bitmapList, byte[] byteArray, int len, String cameraInOrOut) {
    public void addBitmap(final List<SurveillanceQueryItem> bitmapList, final byte[] byteArray, int len, final String cameraInOrOut) {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.SURVEILLANCE_UPLOAD);
        params.addBodyParameter("base64Photo", Base64.encodeToString(byteArray, 0, len, Base64.DEFAULT));
        params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
        params.addBodyParameter("deviceId", BaseApplication.getInstance().getAndroidDevice().getDeviceId());
        params.addBodyParameter("InOrOutCamera", cameraInOrOut+"");
        x.http().post(params, new BaseCommonCallBack() {
            public void success() {
                List<SurveillanceQueryItem> items = getList(SurveillanceQueryItem.class);
                List prevVisitorList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().getPrevList();
                List prevAttendanceList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().getPrevList();
                List newVisitorList = new ArrayList();
                List newAttendanceList = new ArrayList();
                for (int i = 0; items != null && i < items.size(); i++) {
                    SurveillanceQueryItem item = items.get(i);
                    int type = item.getRegisterOrCheckIn();
                    if (type == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE
                            || type == CommonVariables.Surveillance.VISIT_CHECK_IN_ITEM_TYPE
                            ) {
                        //item.setRegisterOrCheckIn(CommonVariables.Surveillance.VISIT_CHECK_IN_ITEM_TYPE);
                        if (prevVisitorList.size() > 3 ) {
                        }
                        item.setCreateTime(new Date());
                        newVisitorList.add(0, item);
                        if (i < bitmapList.size()) {
                            SurveillanceQueryItem surveillanceQueryItem = bitmapList.get(i);
                            item.setBitmap(surveillanceQueryItem.getBitmap());
                            item.setBase64Image(surveillanceQueryItem.getBase64Image());
                            item.setNativeImg(surveillanceQueryItem.getNativeImg());
                            item.setWidth(surveillanceQueryItem.getWidth());
                            item.setHeight(surveillanceQueryItem.getHeight());
                        }
                    }
                    if (type ==  CommonVariables.Surveillance.VISIT_ATTENDANCE_ITEM_TYPE) {
                        newAttendanceList.add(item);
                        if (i < bitmapList.size()) {
                            SurveillanceQueryItem surveillanceQueryItem = bitmapList.get(i);
                            item.setBitmap(surveillanceQueryItem.getBitmap());
                            item.setBase64Image(surveillanceQueryItem.getBase64Image());
                            item.setNativeImg(surveillanceQueryItem.getNativeImg());
                            item.setWidth(surveillanceQueryItem.getWidth());
                            item.setHeight(surveillanceQueryItem.getHeight());
                        }
                    }
        class ConnectionTask extends AsyncTask<String, Void, String> {
            private String json = "";
            @Override
            protected String doInBackground(String... urls) {
                try {
                    PostData pd = new PostData();
                    pd.addValue("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
                    pd.addValue("InOrOutCamera", cameraInOrOut + "");
                    pd.addValue("deviceId", BaseApplication.getInstance().getAndroidDevice().getDeviceId());
                    pd.addData("surveillancePhoto", "application/octet-stream", byteArray);
                    Uploader uploader = new Uploader("", AppApi.BASE_URL + AppApi.SURVEILLANCE_UPLOAD);
                    json = uploader.upload("face/Surveillance/o_upload.do", pd);
                    return json;
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if (newVisitorList.size() > 0) {
                    prevVisitorList.addAll(0, newVisitorList);
                    registerTopAndCheckInBottom(prevVisitorList);
                    SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().show(prevVisitorList);
                }
                if (newAttendanceList.size() > 0) {
                    prevAttendanceList.addAll(0, newAttendanceList);
                    if (prevAttendanceList.size() > 20) {
                        prevAttendanceList = prevAttendanceList.subList(0, 20);
                    }
                    SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().show(prevAttendanceList);
                }
                return null;
            }
        });
            @Override
            protected void onPostExecute(String result) {
                try {
                    System.out.println("json="+result);
                    ResultBean resultBean = JSON.parseObject(result, ResultBean.class);
                    if (resultBean == null) {
                        System.out.println("resultBean="+resultBean);
                        return;
                    }
                    Object data = resultBean.getData();
                    if (data instanceof JSONArray) {
                        JSONArray jsonArray = (JSONArray) data;
                        List<SurveillanceQueryItem> items =  JSON.parseArray(jsonArray.toJSONString(), SurveillanceQueryItem.class);
                        List prevVisitorList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().getPrevList();
                        List prevAttendanceList = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().getPrevList();
                        List newVisitorList = new ArrayList();
                        List newAttendanceList = new ArrayList();
                        for (int i = 0; items != null && i < items.size(); i++) {
                            SurveillanceQueryItem item = items.get(i);
                            int type = item.getRegisterOrCheckIn();
                            if (type == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE
                                    || type == CommonVariables.Surveillance.VISIT_CHECK_IN_ITEM_TYPE
                                    ) {
                                item.setCreateTime(new Date());
                                newVisitorList.add(0, item);
                                if (i < bitmapList.size()) {
                                    SurveillanceQueryItem surveillanceQueryItem = bitmapList.get(i);
                                    item.setBitmap(surveillanceQueryItem.getBitmap());
                                    item.setBase64Image(surveillanceQueryItem.getBase64Image());
                                    item.setNativeImg(surveillanceQueryItem.getNativeImg());
                                    item.setWidth(surveillanceQueryItem.getWidth());
                                    item.setHeight(surveillanceQueryItem.getHeight());
                                }
                            }
                            if (type ==  CommonVariables.Surveillance.VISIT_ATTENDANCE_ITEM_TYPE) {
                                newAttendanceList.add(item);
                                if (i < bitmapList.size()) {
                                    SurveillanceQueryItem surveillanceQueryItem = bitmapList.get(i);
                                    item.setBitmap(surveillanceQueryItem.getBitmap());
                                    item.setBase64Image(surveillanceQueryItem.getBase64Image());
                                    item.setNativeImg(surveillanceQueryItem.getNativeImg());
                                    item.setWidth(surveillanceQueryItem.getWidth());
                                    item.setHeight(surveillanceQueryItem.getHeight());
                                }
                            }
                            System.out.println("inOutCamera="+item.getInOrOutCamera());
                        }
                        if (newVisitorList.size() > 0) {
                            prevVisitorList.addAll(0, newVisitorList);
                            registerTopAndCheckInBottom(prevVisitorList);
                            SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().show(prevVisitorList);
                        }
                        if (newAttendanceList.size() > 0) {
                            prevAttendanceList.addAll(0, newAttendanceList);
                            if (prevAttendanceList.size() > 20) {
                                prevAttendanceList = prevAttendanceList.subList(0, 20);
                            }
                            SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().show(prevAttendanceList);
                        }
                    }
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
        }
        ConnectionTask task = new ConnectionTask();
        String[] params = new String[2];
        task.execute(params);
    }
    public List getSurveillancePhotoList(long selectedId) {
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/AppApi.java
@@ -3,8 +3,12 @@
public class AppApi {
//    public final static String IMAGE_URL_BASE = "http://192.168.1.141/AI/img/";
//    public final static String BASE_URL = "http://192.168.1.141/AI/";
    public final static String IMAGE_URL_BASE = "http://192.168.1.137/face/img/";
    public final static String BASE_URL = "http://192.168.1.137/face/";
    //public final static String IMAGE_URL_BASE = "http://192.168.1.137:8333/face/img/";
    //public final static String BASE_URL = "http://192.168.1.137:8333/face/";
    public final static String IMAGE_URL_BASE = "http://192.168.1.137:8888/";
    public final static String BASE_URL = "http://192.168.1.51/face/";
//    public final static String BASE_URL = "http://192.168.1.137:8333/face/";
    public static final String REGISTER_ADD = "Register/o_add.do";
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/CaffeMobile.java
New file
@@ -0,0 +1,11 @@
package cn.com.basic.face.util;
/**
 * Created by xiuxi on 2017/6/15.
 */
public class CaffeMobile {
    public static native double hello(String model_file, String trained_file);
}
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/PostData.java
New file
@@ -0,0 +1,104 @@
package cn.com.basic.face.util;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
public class PostData {
    class ByteData {
        byte[] data;
        String header;
        String name;
        ByteData(String name, String contentType, byte[] data) {
            this.name = name;
            this.data = data;
            try {
                header = "--" + BOUNDARY + CRLF + "Content-Disposition: form-data; name=\"surveillancePhoto\"; filename=\"" + URLEncoder.encode(name, encoding) + "\";" + CRLF +
                        "Content-Type: " + contentType + CRLF + CRLF;
            } catch(UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        public int getSize() {
            return header.length() + data.length + CRLF.length();
        }
        public void write(OutputStream out) throws IOException {
            out.write(header.getBytes());
            out.write(data);
            out.write(CRLF.getBytes());
        }
    }
    private static final String TAG = PostData.class.getSimpleName();
    static final String BOUNDARY = "3C3F786D6C2076657273696F6E2E302220656E636F64696E673D662D38223F3E0A3C6D616E6966";
    static final String CRLF = "\r\n";
    private final String encoding;
    private StringBuilder sb;
    private String trailer;
    private List<ByteData> dataList = new ArrayList<ByteData>();
    public PostData() {
        this("UTF-8");
    }
    public PostData(String encoding) {
        this.encoding = encoding;
        sb = new StringBuilder();
        trailer = "--" + BOUNDARY + "--" + CRLF;
    }
    public String getContentType() {
        return "multipart/form-data; boundary=" + BOUNDARY;
    }
    public void addValue(String name, int value) {
        addValue(name, Integer.toString(value));
    }
    public void addValue(String name, String value) {
        sb.append("--" + BOUNDARY + CRLF);
        sb.append("Content-Disposition: form-data; name=\"");
        try {
            sb.append(URLEncoder.encode(name, encoding));
            sb.append('"');
            sb.append(CRLF + CRLF);
            sb.append(value);
            sb.append(CRLF);
        } catch(UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
    public void addData(String name, String contentType, byte[] data) {
        dataList.add(new ByteData(name, contentType, data));
    }
    public long getLength() {
        long length = sb.toString().getBytes().length;
        length += trailer.length();
        for(ByteData byteData : dataList)
            length += byteData.getSize();
        return length;
    }
    public String toString() {
        return sb.toString();
    }
    public void write(OutputStream out) throws IOException {
        out.write(sb.toString().getBytes());
        for(ByteData byteData : dataList)
            byteData.write(out);
        out.write(trailer.getBytes());
    }
}
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/RtspFaceNative.java
@@ -56,6 +56,7 @@
    public static void faceCallBack(int cameraIdx, int count)
    {
        System.out.println("cameraIdex="+cameraIdx+", count="+count);
        Log.i("@@@", "RtspFaceNative.faceCallBack, cameraIdx=" + cameraIdx + ", count=" + count);
        // something else
@@ -117,8 +118,9 @@
                SurveillanceQueryItem surveillanceQueryItem = new SurveillanceQueryItem();
                int offset = 0;
                int size = item.size;
                Bitmap bitmap = Bitmap.createBitmap(item.width,item.height, Bitmap.Config.ARGB_8888);
                Bitmap bitmap = Bitmap.createBitmap(item.width,item.height, Bitmap.Config.RGB_565);
                ByteBuffer byteBuffer = ByteBuffer.wrap(item.image, offset, size);
                //byteBuffer.rewind();
                bitmap.copyPixelsFromBuffer(byteBuffer);
//                String str = Base64.encodeToString(item.image, offset, size, Base64.DEFAULT);
//                System.out.println(str.length());
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/UploadTest.java
New file
@@ -0,0 +1,24 @@
package cn.com.basic.face.util;
import java.io.FileOutputStream;
import java.io.IOException;
public class UploadTest {
    private static byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5 , 4, 3, 2, 1};
    static public void main(String args[]) {
        PostData pd = new PostData();
        pd.addValue("base64Photo", "joe");
        pd.addValue("name", "Joe Smith");
        pd.addData("surveillancePhoto", "application/octet-stream", data);
        Uploader uploader = new Uploader("http", "localhost");
        try {
            uploader.upload("face/Surveillance/o_upload.do", pd);
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/Uploader.java
New file
@@ -0,0 +1,68 @@
package cn.com.basic.face.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Uploader {
    private static final int CONNECTION_TIMEOUT = 10 * 1000;
    private static final int READ_TIMEOUT = 10 * 1000;
    final private String protocol;
    final private String server;
    public Uploader(String protocol, String server) {
        this.protocol = protocol;
        this.server = server;
    }
    protected HttpURLConnection getBaseConnection(String endpoint) throws IOException {
        HttpURLConnection connection;
        URL url;
        try {
            url = new URL(server);
            connection = (HttpURLConnection)url.openConnection();
        } catch(MalformedURLException e) {
            throw new IOException("Malformed URL");
        }
        connection.setDoInput(true);
        connection.setConnectTimeout(CONNECTION_TIMEOUT);
        connection.setReadTimeout(READ_TIMEOUT);
        return connection;
    }
    public String upload(String endpoint, PostData postData) throws IOException {
        HttpURLConnection connection = null;
        connection = getBaseConnection(endpoint);
        connection.setDoOutput(true);
        connection.setInstanceFollowRedirects(false);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Charset", "utf-8");
        connection.setRequestProperty("Content-Type", postData.getContentType());
        connection.setRequestProperty("Accept", "text/json");
        OutputStream out = new BufferedOutputStream(connection.getOutputStream(), 8192);
        postData.write(out);
        out.flush();
        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line = br.readLine();
        String json = "";
        while (line != null) {
            json += line;
            line = br.readLine();
        }
        System.out.println(json);
        int response = connection.getResponseCode();
        connection.disconnect();
//        return response;
        return json;
    }
}
VisitFace/DemoForBsk/app/src/main/res/layout/activity_main.xml
@@ -8,7 +8,6 @@
    android:background="@color/colorBackground"
    tools:context="com.bsk.zhangbo.demoforbsk.cn.com.basic.face.android.ui.MainActivity">
    <!--app:tabMaxWidth="@dimen/view_size_58" 设置tab的大小-->
    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
@@ -19,7 +18,11 @@
        app:tabIndicatorHeight="@dimen/view_size_0"
        app:tabSelectedTextColor="#cccccc"
        app:tabTextColor="@android:color/white"
        app:tabTextAppearance="@style/MyTabLayoutTextAppearance" >
        app:tabTextAppearance="@style/MyTabLayoutTextAppearance"
        app:tabMaxWidth="0dp"
        app:tabGravity="fill"
        app:tabMode="fixed"
        >
    </android.support.design.widget.TabLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
VisitFace/DemoForBsk/app/src/main/res/layout/fragment_surveillance_bottom_register_cell.xml
@@ -21,8 +21,8 @@
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_textview"
        android:gravity="center"
        android:textSize="@dimen/w16dp"
        android:text="注册"
        android:textSize="@dimen/w12dp"
        android:text="未注册"
        android:layout_marginBottom="@dimen/h20dp"
        android:layout_marginRight="@dimen/w10dp"
        android:layout_alignParentBottom="true"