VisitFace/DemoForBsk/app/src/main/AndroidManifest.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/PictureTaker.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/SurveillanceMng.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
VisitFace/DemoForBsk/app/src/main/res/layout/fragment_register_camera_preview.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/base/PictureTaker.java
New file @@ -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; } }; } 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 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); } } VisitFace/DemoForBsk/app/src/main/res/layout/fragment_register_camera_preview.xml
New file @@ -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>