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