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