xuxiuxi
2017-07-21 dc49680d28bffdba2168671e967e8a11988960ba


git-svn-id: http://192.168.1.226/svn/proxy@784 454eff88-639b-444f-9e54-f578c98de674
10个文件已修改
376 ■■■■ 已修改文件
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java 280 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/DepartmentDao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/DeviceDao.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/DictionaryDao.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/PostDao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/SurveillanceDao.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/TestDao.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/FileUtil.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/BaseApplication.java
@@ -84,7 +84,7 @@
    public boolean networkNotAvailable() {
        boolean connected = true;
        boolean connected = false;
//        ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//        if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
//                connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
@@ -97,7 +97,7 @@
    }
    public boolean networkAvailable() {
        boolean connected = true;
        boolean connected = false;
//        ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//        if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
//                connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/MainActivity.java
@@ -44,10 +44,12 @@
import com.luxand.FSDK;
import cn.com.basic.face.discern.common.CommonVariables;
import cn.com.basic.face.discern.entity.PhoneCall;
import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
import cn.com.basic.face.fragment.AttenderRegisterFragment;
import cn.com.basic.face.fragment.SurveillanceFragment;
import cn.com.basic.face.service.SurveillanceMng;
import cn.com.basic.face.service.sqlite.SurveillanceDao;
import cn.com.basic.face.service.sqlite.TestDao;
import cn.com.basic.face.util.FileUtil;
import cn.com.basic.face.util.NativeImg;
@@ -69,6 +71,43 @@
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import android.view.ViewGroup.LayoutParams;
import com.luxand.FSDK;
import com.luxand.FSDK.HTracker;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.graphics.drawable.ColorDrawable;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.hardware.Camera.Size;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.ViewGroup.LayoutParams;
import android.widget.EditText;
public class MainActivity extends BaseActivity implements View.OnClickListener{
@@ -340,17 +379,25 @@
        if (CommonVariables.FACE_SERVER) {
            sDensity = getResources().getDisplayMetrics().scaledDensity;
            int res = 0;
            String s = FileUtil.getStringFromFile("/system/a");
            int res = FSDK.ActivateLibrary(s);
            if (res != FSDK.FSDKE_OK) {
                mIsFailed = true;
                showErrorAndClose("failed", res);
            } else {
                FSDK.Initialize();
                // Hide the window title (it is done in manifest too)
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
                //requestWindowFeature(Window.FEATURE_NO_TITLE);
                // Lock orientation
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                // Camera layer and drawing layer
                mDraw = new ProcessImageAndDrawResults(this);
                mPreview = new Preview(this, mDraw);
                mDraw.mTracker = new FSDK.HTracker();
                mDraw.mTracker = new HTracker();
                String templatePath = this.getApplicationInfo().dataDir + "/" + database;
                if (FSDK.FSDKE_OK != FSDK.LoadTrackerMemoryFromFile(mDraw.mTracker, templatePath)) {
                    res = FSDK.CreateTracker(mDraw.mTracker);
@@ -358,10 +405,40 @@
                        showErrorAndClose("Error creating tracker", res);
                    }
                }
                resetTrackerParameters();
                this.getWindow().setBackgroundDrawable(new ColorDrawable()); //black background
                //setContentView(mPreview); //creates MainActivity contents
                //addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                // Menu
//                LayoutInflater inflater = (LayoutInflater)this.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
//                View buttons = inflater.inflate(R.layout.bottom_menu, null );
//                buttons.findViewById(R.id.helpButton).setOnClickListener(this);
//                buttons.findViewById(R.id.clearButton).setOnClickListener(this);
//                addContentView(buttons, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//                FSDK.Initialize();
//                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//                mDraw = new ProcessImageAndDrawResults(this);
//                mPreview = new Preview(this, mDraw);
//                mDraw.mTracker = new FSDK.HTracker();
//                String templatePath = this.getApplicationInfo().dataDir + "/" + database;
//                if (FSDK.FSDKE_OK != FSDK.LoadTrackerMemoryFromFile(mDraw.mTracker, templatePath)) {
//                    res = FSDK.CreateTracker(mDraw.mTracker);
//                    if (FSDK.FSDKE_OK != res) {
//                        showErrorAndClose("Error creating tracker", res);
//                    }
//                }
//                resetTrackerParameters();
//
//                setContentView(mPreview); //creates MainActivity contents
//                addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                // Menu
//                LayoutInflater inflater = (LayoutInflater)this.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
@@ -466,6 +543,11 @@
        mDraw.mStopping = 0;
    }
    @Override
    protected void onStop() {
        super.onStop();
        Config.sqlMap.getDb().close();
    }
}
@@ -474,8 +556,9 @@
    public int x1, y1, x2, y2;
}
// Draw graphics on top of the video
class ProcessImageAndDrawResults extends View {
    public FSDK.HTracker mTracker;
    public HTracker mTracker;
    final int MAX_FACES = 5;
    final FaceRectangle[] mFacePositions = new FaceRectangle[MAX_FACES];
@@ -533,12 +616,12 @@
        mPaintGreen.setStyle(Paint.Style.FILL);
        mPaintGreen.setColor(Color.GREEN);
        mPaintGreen.setTextSize(18 * MainActivity.sDensity);
        mPaintGreen.setTextAlign(Paint.Align.CENTER);
        mPaintGreen.setTextAlign(Align.CENTER);
        mPaintBlue = new Paint();
        mPaintBlue.setStyle(Paint.Style.FILL);
        mPaintBlue.setColor(Color.BLUE);
        mPaintBlue.setTextSize(18 * MainActivity.sDensity);
        mPaintBlue.setTextAlign(Paint.Align.CENTER);
        mPaintBlue.setTextAlign(Align.CENTER);
        mPaintBlueTransparent = new Paint();
        mPaintBlueTransparent.setStyle(Paint.Style.STROKE);
@@ -546,13 +629,15 @@
        mPaintBlueTransparent.setColor(Color.BLUE);
        mPaintBlueTransparent.setTextSize(25);
        //mBitmap = null;
        mYUVData = null;
        mRGBData = null;
        first_frame_saved = false;
    }
    public void onDraw(Canvas canvas) {
    @Override
    protected void onDraw(Canvas canvas) {
        if (mStopping == 1) {
            mStopped = 1;
            super.onDraw(canvas);
@@ -673,7 +758,11 @@
                bitmapList.add(surveillanceQueryItem);
                SurveillanceMng.getInstance().addBitmap(bitmapList, nativeImg.image, 0, CommonVariables.Camera.IN+"", nativeImg.image);
                if (BaseApplication.getInstance().networkAvailable()) {
                    SurveillanceMng.getInstance().addBitmap(bitmapList, nativeImg.image, 0, CommonVariables.Camera.IN+"", nativeImg.image);
                } else {
                    SurveillanceDao.getInstance().saveOfflineUnknownToLocal(bitmapList, nativeImg.image, CommonVariables.Camera.IN+"");
                }
            }
        }
@@ -700,7 +789,7 @@
        }
        super.onDraw(canvas);
    }
    } // end onDraw method
    @Override
@@ -715,6 +804,10 @@
                long IDs[] = new long[MAX_FACES];
                for (int i=0; i<MAX_FACES; ++i) {
                    rects[i] = new FaceRectangle();
                    if(rects[i] == null) {
                        faceLock.unlock();
                        return true;
                    }
                    rects[i].x1 = mFacePositions[i].x1;
                    rects[i].y1 = mFacePositions[i].y1;
                    rects[i].x2 = mFacePositions[i].x2;
@@ -729,6 +822,7 @@
                        mTouchedIndex = i;
                        // requesting name on tapping the face
                        final EditText input = new EditText(mContext);
                        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                        builder.setMessage("Enter person's name" )
@@ -746,7 +840,7 @@
                                        mTouchedIndex = -1;
                                    }
                                })
                                .setCancelable(false)
                                .setCancelable(false) // cancel with button only
                                .show();
                        break;
@@ -783,121 +877,12 @@
            }
        }
    }
    public void startFaceDetection() {
        if (mStopping == 1) {
            mStopped = 1;
            return;
        }
        if (mYUVData == null || mTouchedIndex != -1) {
            return;
        }
        decodeYUV420SP(mRGBData, mYUVData, mImageWidth, mImageHeight);
        FSDK.HImage Image = new FSDK.HImage();
        FSDK.FSDK_IMAGEMODE imagemode = new FSDK.FSDK_IMAGEMODE();
        imagemode.mode = FSDK.FSDK_IMAGEMODE.FSDK_IMAGE_COLOR_24BIT;
        FSDK.LoadImageFromBuffer(Image, mRGBData, mImageWidth, mImageHeight, mImageWidth*3, imagemode);
        FSDK.MirrorImage(Image, false);
        FSDK.HImage RotatedImage = new FSDK.HImage();
        FSDK.CreateEmptyImage(RotatedImage);
        int ImageWidth = mImageWidth;
        if (rotated) {
            ImageWidth = mImageHeight;
            FSDK.RotateImage90(Image, -1, RotatedImage);
        } else {
            FSDK.CopyImage(Image, RotatedImage);
        }
        //String surveillancePhotoName11 = "/storage/sdcard1/"+System.currentTimeMillis()+".jpg";
        //FSDK.SaveImageToFile(Image, surveillancePhotoName11);
        FSDK.FreeImage(Image);
        long IDs[] = new long[MAX_FACES];
        long face_count[] = new long[1];
        FSDK.FeedFrame(mTracker, 0, RotatedImage, face_count, IDs);
        System.out.println("face_count="+face_count[0]+", mImageWidth="+mImageWidth+", mImageHeight="+mImageHeight);
        faceLock.lock();
        for (int i=0; i<MAX_FACES; ++i) {
            mFacePositions[i] = new FaceRectangle();
            mFacePositions[i].x1 = 0;
            mFacePositions[i].y1 = 0;
            mFacePositions[i].x2 = 0;
            mFacePositions[i].y2 = 0;
            mIDs[i] = IDs[i];
        }
        for (int i = 0; i < (int)face_count[0]; ++i) {
            FSDK.FSDK_Features Eyes = new FSDK.FSDK_Features();
            FSDK.GetTrackerEyes(mTracker, 0, mIDs[i], Eyes);
            GetFaceFrame(Eyes, mFacePositions[i]);
        }
        if ((int)face_count[0] > 0) {
            FSDK.HImage img2 = new FSDK.HImage();
            FSDK.CreateEmptyImage(img2);
            FSDK.TFacePosition fp = new FSDK.TFacePosition();
            FSDK.DetectFace(RotatedImage, fp);
            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.CopyRect(RotatedImage, x1, y1, x2, y2, img2);
            System.out.println("face_count="+face_count[0]);
            String surveillancePhotoName = MainActivity.getInstance().getFilesDir().getAbsolutePath()+System.currentTimeMillis()+".jpg";
            FSDK.SaveImageToFile(img2, surveillancePhotoName);
            List bitmapList = new ArrayList();
            for (int i = 0; i < 1; i++) {
                NativeImg nativeImg = new NativeImg();
                nativeImg.image = FileUtil.readFile(new File(surveillancePhotoName));
                nativeImg.size = nativeImg.image.length;
                SurveillanceQueryItem surveillanceQueryItem = new SurveillanceQueryItem();
                surveillanceQueryItem.setNativeImg(nativeImg);
                nativeImg.st_track_id = 1;
                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");
                bitmapList.add(surveillanceQueryItem);
                SurveillanceMng.getInstance().addBitmap(bitmapList, nativeImg.image, 0, CommonVariables.Camera.IN+"", nativeImg.image);
            }
} // end of ProcessImageAndDrawResults class
        }
        FSDK.FreeImage(RotatedImage);
        faceLock.unlock();
    }
}
// Show video from camera and pass frames to ProcessImageAndDraw class
class Preview extends SurfaceView implements SurfaceHolder.Callback {
    Context mContext;
    SurfaceHolder mHolder;
@@ -910,48 +895,46 @@
        mContext = context;
        mDraw = draw;
        //Install a SurfaceHolder.Callback so we get notified when the underlying surface is created and destroyed.
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        //new MyThread1().start();
    }
    int count = 0;
    //SurfaceView callback
    public void surfaceCreated(SurfaceHolder holder) {
        mFinished = false;
        // Find the ID of the camera
        int cameraId = 0;
        boolean frontCameraFound = false;
        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
        for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
            Camera.getCameraInfo(i, cameraInfo);
            //if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK)
            if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                cameraId = i;
                frontCameraFound = true;
            }
        }
        //If authorisation not granted for camera
        if (ContextCompat.checkSelfPermission(MainActivity.getInstance(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
            //ask for authorisation
            ActivityCompat.requestPermissions(MainActivity.getInstance(), new String[]{Manifest.permission.CAMERA}, 50);
        if (frontCameraFound) {
            mCamera = Camera.open(cameraId);
        } else {
            mCamera = Camera.open();
        }
        try {
            mCamera.setPreviewDisplay(holder);
            mCamera.addCallbackBuffer(new byte[((640 * 480) * ImageFormat.getBitsPerPixel(ImageFormat.NV21)) / 8]);
            //mCamera.setPreviewCallback
            mCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() {
                public void onPreviewFrame(final byte[] data, final Camera camera) {
                    mCamera.addCallbackBuffer(data);
            // Preview callback used whenever new viewfinder frame is available
            mCamera.setPreviewCallback(new PreviewCallback() {
                public void onPreviewFrame(byte[] data, Camera camera) {
                    if ( (mDraw == null) || mFinished )
                        return;
                    if (mDraw.mYUVData == null) {
                        // Initialize the draw-on-top companion
                        Camera.Parameters params = camera.getParameters();
                        mDraw.mImageWidth = params.getPreviewSize().width;
                        mDraw.mImageHeight = params.getPreviewSize().height;
@@ -959,6 +942,7 @@
                        mDraw.mYUVData = new byte[data.length];
                    }
                    // Pass YUV data to draw-on-top companion
                    System.arraycopy(data, 0, mDraw.mYUVData, 0, data.length);
                    mDraw.invalidate();
                }
@@ -981,7 +965,11 @@
        }
    }
    //SurfaceView callback
    public void surfaceDestroyed(SurfaceHolder holder) {
        // Surface will be destroyed when we return, so stop the preview.
        // Because the CameraDevice object is not a shared resource, it's very
        // important to release it when the activity is paused.
        mFinished = true;
        if (mCamera != null) {
            mCamera.setPreviewCallback(null);
@@ -991,24 +979,32 @@
        }
    }
    //SurfaceView callback, configuring camera
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        if (mCamera == null) return;
        // Now that the size is known, set up the camera parameters and begin
        // the preview.
        Camera.Parameters parameters = mCamera.getParameters();
        //Keep uncommented to work correctly on phones:
        //This is an undocumented although widely known feature
        /**/
        if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
            parameters.set("orientation", "portrait");
            mCamera.setDisplayOrientation(90);
            mCamera.setDisplayOrientation(90); // For Android 2.2 and above
            mDraw.rotated = true;
        } else {
            parameters.set("orientation", "landscape");
            mCamera.setDisplayOrientation(0);
            mCamera.setDisplayOrientation(0); // For Android 2.2 and above
        }
        List<Camera.Size> supportedSizes = parameters.getSupportedPreviewSizes();
        /**/
        // choose preview size closer to 640x480 for optimal performance
        List<Size> supportedSizes = parameters.getSupportedPreviewSizes();
        int width = 0;
        int height = 0;
        System.out.println("surfaceChanged");
        for (Camera.Size s: supportedSizes) {
        for (Size s: supportedSizes) {
            if ((width - 640)*(width - 640) + (height - 480)*(height - 480) >
                    (s.width - 640)*(s.width - 640) + (s.height - 480)*(s.height - 480)) {
                width = s.width;
@@ -1016,10 +1012,12 @@
            }
        }
        //try to set preferred parameters
        try {
            if (width*height > 0) {
                parameters.setPreviewSize(width, height);
            }
            //parameters.setPreviewFrameRate(10);
            parameters.setSceneMode(Camera.Parameters.SCENE_MODE_PORTRAIT);
            parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
            mCamera.setParameters(parameters);
@@ -1033,7 +1031,7 @@
    }
    private void makeResizeForCameraAspect(float cameraAspectRatio){
        ViewGroup.LayoutParams layoutParams = this.getLayoutParams();
        LayoutParams layoutParams = this.getLayoutParams();
        int matchParentWidth = this.getWidth();
        int newHeight = (int)(matchParentWidth/cameraAspectRatio);
        if (newHeight != layoutParams.height) {
@@ -1043,6 +1041,4 @@
            this.invalidate();
        }
    }
}
} // end of Preview class
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/discern/common/CommonVariables.java
@@ -111,9 +111,9 @@
        public static final String CAMERA2 = "camera2";
    }
    public static boolean FACE_SERVER = false;
    public static boolean FACE_SERVER = true;
    public static boolean ID_CARD = false;
    public static boolean EMULATOR = false;
    public static boolean EMULATOR = true;
    public static boolean androidOffline() {
        return true;
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/DepartmentDao.java
@@ -40,9 +40,6 @@
            e.printStackTrace();
        }finally {
            db.endTransaction();
            if(db!=null){
                db.close();
            }
        }
        return list;
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/DeviceDao.java
@@ -77,9 +77,6 @@
            e.printStackTrace();
        }finally {
            db.endTransaction();
            if(db!=null){
                db.close();
            }
        }
        return list;
    }
@@ -142,9 +139,6 @@
            e.printStackTrace();
        }finally {
            db.endTransaction();
            if(db!=null){
                db.close();
            }
        }
        return list;
    }
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/DictionaryDao.java
@@ -47,9 +47,6 @@
            e.printStackTrace();
        }finally {
            db.endTransaction();
            if(db!=null){
                db.close();
            }
        }
        return list;
    }
@@ -158,9 +155,6 @@
            e.printStackTrace();
        } finally {
            db.endTransaction();
            if (db != null && db.isOpen()) {
                db.close();
            }
        }
        return  list;
    }
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/PostDao.java
@@ -45,9 +45,6 @@
            e.printStackTrace();
        }finally {
            db.endTransaction();
            if(db!=null){
                db.close();
            }
        }
        return list;
    }
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/SurveillanceDao.java
@@ -30,22 +30,27 @@
        if (bitmapList == null || bitmapList.size() == 0) {
            return;
        }
        String rawDataFileName = UUID.randomUUID().toString()+"";
        FileUtil.writeToFile(rawDataFileName, rawData);
        String headPicture = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String createTime = sdf.format(new Date());
        String sql = "insert offline_unknown(raw_data_path, camera_in_or_out, create_time) values('"+
                rawDataFileName+"','"+
                cameraInOrOut+"','"+
                createTime+"','"+
                "null" +"')";
        SQLiteDatabase db = Config.sqlMap.getDb();
        db.beginTransaction();
        db.execSQL(sql);
        db.endTransaction();
        SQLiteDatabase db = null;
        try {
            String rawDataFileName = UUID.randomUUID().toString() + "";
            FileUtil.writeToFile(rawDataFileName, rawData);
            String headPicture = "";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String createTime = sdf.format(new Date());
            String sql = "insert into offline_surveillance(raw_data_path, camera_in_or_out, create_time) values('" +
                    rawDataFileName + "','" +
                    cameraInOrOut + "','" +
                    createTime + "'" +")";
            db = Config.sqlMap.getDb();
            db.beginTransaction();
            db.execSQL(sql);
            db.endTransaction();
            UnknownSurveillanceQueryItemUtil.getInstance().addItems(bitmapList);
        UnknownSurveillanceQueryItemUtil.getInstance().addItems(bitmapList);
            readOfflineUnknownFromLocal();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //人员注册可以选择本地图片
        //同步临时表
@@ -57,7 +62,7 @@
    public UnknownQueryItem readOfflineUnknownFromLocal() {
        UnknownQueryItem item = null;
        String sql = "select raw_data_path,camera_in_or_out,create_time from offline_unknown order by create_time create_time limit 1";
        String sql = "select raw_data_path,camera_in_or_out,create_time from offline_surveillance order by create_time limit 1";
        SQLiteDatabase db = Config.sqlMap.getDb();
        db.beginTransaction();
        Cursor c = db.rawQuery(sql, new String[]{});
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/sqlite/TestDao.java
@@ -1,5 +1,7 @@
package cn.com.basic.face.service.sqlite;
import cn.com.basic.face.discern.entity.Dictionary;
import java.util.List;
public class TestDao {
    public static TestDao instance = new TestDao();
@@ -8,7 +10,7 @@
    }
    public static void test() {
           List<Dictionary>list=DictionaryDao.getInstance().loadGenderList();
    }
}
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/FileUtil.java
@@ -1,9 +1,13 @@
package cn.com.basic.face.util;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import cn.com.basic.face.base.MainActivity;
@@ -89,4 +93,29 @@
            e.printStackTrace();
        }
    }
    public static String convertStreamToString(InputStream is) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }
        reader.close();
        return sb.toString();
    }
    public static String getStringFromFile (String filePath) {
        try {
            File fl = new File(filePath);
            FileInputStream fin = new FileInputStream(fl);
            String ret = convertStreamToString(fin);
            fin.close();
            return ret;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
}