From 91e551962e2e61faf55e0e733f3e06fd2b413cbd Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 04 五月 2017 16:45:54 +0800
Subject: [PATCH] 

---
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java   |    1 
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java |    8 +-
 VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml                                   |    6 +
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/PictureTaker.java         |  164 +++++++++++++++++++++++++++++++++++++++++
 VisitFace/DemoForBsk/app/src/main/res/layout/fragment_register_camera_preview.xml       |    5 +
 5 files changed, 179 insertions(+), 5 deletions(-)

diff --git a/VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml b/VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml
index dadf198..9450433 100644
--- a/VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml
+++ b/VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml
@@ -7,6 +7,7 @@
 
     <!-- INTERNET is needed to use a URI-based media player, depending on the URI -->
     <uses-permission android:name="android.permission.INTERNET"></uses-permission>
+    <uses-permission android:name="android.permission.CAMERA"></uses-permission>
 
     <application
         android:name="cn.com.basic.face.base.BaseApplication"
@@ -25,6 +26,9 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity android:name="cn.com.basic.face.base.PictureTaker"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
+            android:screenOrientation="landscape"></activity>
     </application>
-
 </manifest>
\ No newline at end of file
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/PictureTaker.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/PictureTaker.java
new file mode 100644
index 0000000..b030a99
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/PictureTaker.java
@@ -0,0 +1,164 @@
+package cn.com.basic.face.base;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.List;
+
+import android.app.Activity;
+import android.content.ContentValues;
+import android.content.Intent;
+import android.hardware.Camera;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.MediaStore.Images;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.view.View.OnTouchListener;
+
+import com.bsk.zhangbo.demoforbsk.R;
+
+public class PictureTaker extends Activity
+{
+    private static final String TAG = "PICTURE_TAKER";
+
+    private SurfaceView surfaceView;
+    private SurfaceHolder surfaceHolder;
+    private boolean isPreviewing;
+
+    private Camera camera;
+    private List<String> effects;
+    private List<Camera.Size> sizes;
+    private String effect = Camera.Parameters.EFFECT_NONE;
+
+    @Override
+    public void onCreate(Bundle bundle)
+    {
+        super.onCreate(bundle);
+        setContentView(R.layout.fragment_register_camera_preview);
+
+        surfaceView = (SurfaceView) findViewById(R.id.cameraSurfaceView);
+        surfaceView.setOnTouchListener(touchListener);
+
+        surfaceHolder = surfaceView.getHolder();
+        surfaceHolder.addCallback(surfaceCallback);
+
+        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu)
+    {
+        super.onCreateOptionsMenu(menu);
+
+        for (String effect : effects)
+            menu.add(effect);
+
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item)
+    {
+        Camera.Parameters p = camera.getParameters();
+        p.setColorEffect(item.getTitle().toString());
+        camera.setParameters(p);
+        return true;
+    }
+
+    private SurfaceHolder.Callback surfaceCallback =
+            new SurfaceHolder.Callback()
+            {
+                @Override
+                public void surfaceDestroyed(SurfaceHolder arg0)
+                {
+                    camera.stopPreview();
+                    isPreviewing = false;
+                    camera.release();
+                }
+
+                @Override
+                public void surfaceCreated(SurfaceHolder arg0)
+                {
+                    camera = Camera.open();
+                    effects = camera.getParameters().getSupportedColorEffects();
+                    sizes = camera.getParameters().getSupportedPreviewSizes();
+                }
+
+                @Override
+                public void surfaceChanged(SurfaceHolder holder, int format,
+                                           int width, int height)
+                {
+                    if (isPreviewing)
+                        camera.stopPreview();
+
+                    Camera.Parameters p = camera.getParameters();
+                    p.setPreviewSize(sizes.get(0).width, sizes.get(0).height);
+                    p.setColorEffect(effect);
+                    p.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
+                    camera.setParameters(p);
+
+                    try
+                    {
+                        camera.setPreviewDisplay(holder); // display using holder
+                    }
+                    catch (IOException e)
+                    {
+                        Log.v(TAG, e.toString());
+                    }
+
+                    camera.startPreview(); // begin the preview
+                    isPreviewing = true;
+                }
+            };
+
+    Camera.PictureCallback pictureCallback = new Camera.PictureCallback()
+    {
+        public void onPictureTaken(byte[] imageData, Camera c)
+        {
+            String fileName = "Slideshow_" + System.currentTimeMillis();
+
+            ContentValues values = new ContentValues();
+            values.put(Images.Media.TITLE, fileName);
+            values.put(Images.Media.DATE_ADDED, System.currentTimeMillis());
+            values.put(Images.Media.MIME_TYPE, "image/jpg");
+
+            Uri uri = getContentResolver().insert(
+                    Images.Media.EXTERNAL_CONTENT_URI, values);
+
+            try
+            {
+                OutputStream outStream =
+                        getContentResolver().openOutputStream(uri);
+                outStream.write(imageData);
+                outStream.flush();
+                outStream.close();
+
+                Intent returnIntent = new Intent();
+                returnIntent.setData(uri);
+                setResult(RESULT_OK, returnIntent);
+
+                finish();
+            }
+            catch (IOException ex)
+            {
+                setResult(RESULT_CANCELED);
+            }
+        }
+    };
+
+    private OnTouchListener touchListener = new OnTouchListener()
+    {
+        @Override
+        public boolean onTouch(View v, MotionEvent event)
+        {
+            camera.takePicture(null, null, pictureCallback);
+            return false;
+        }
+    };
+}
+
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java
index feae9ee..3e27f9d 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java
@@ -18,6 +18,7 @@
 import cn.com.basic.face.adapter.SurveillanceFragment;
 import cn.com.basic.face.base.BaseApplication;
 import cn.com.basic.face.base.BaseFragment;
+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.entity.Register;
@@ -308,6 +309,7 @@
                 Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);
                 fragment_register_id_card_photo.setImageBitmap(bitmap);
                 fragment_register_id_card_photo_img = bitmap;
+                MainActivity.getInstance().getContentResolver().delete(uri, null, null);
 
                 fragment_register_id_card_photo_placeholder_image.setVisibility(View.INVISIBLE);
                 fragment_register_id_card_photo_placeholder_text_view.setVisibility(View.INVISIBLE);
@@ -415,10 +417,8 @@
 
     @OnClick(R.id.fragment_register_id_card_photo)
     public void fragment_register_id_card_photo_click(View view) {
-        Intent intent = new Intent();
-        intent.setType("image/*");
-        intent.setAction(Intent.ACTION_GET_CONTENT);
-        startActivityForResult(Intent.createChooser(intent, "閫夋嫨鍥剧墖"), fragment_register_id_card_photo_);
+        Intent takePicture = new Intent(MainActivity.getInstance(), PictureTaker.class);
+        startActivityForResult(takePicture, fragment_register_id_card_photo_);
     }
 
     @Override
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
index ded27c8..291ecdb 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java
@@ -104,6 +104,7 @@
                 if (registerList.size() > 16) {
                     break;
                 }
+                surveillanceQueryItem.setSurveillancePhotoSelected(false);
                 registerList.add(surveillanceQueryItem);
             }
         }
diff --git a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_register_camera_preview.xml b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_register_camera_preview.xml
new file mode 100644
index 0000000..881f3c6
--- /dev/null
+++ b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_register_camera_preview.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SurfaceView xmlns:android="http://schemas.android.com/apk/res/android" 
+   android:id="@+id/cameraSurfaceView" android:layout_width="match_parent"
+   android:layout_height="match_parent">
+</SurfaceView>

--
Gitblit v1.8.0